ocg_chat 0.0.22 copy "ocg_chat: ^0.0.22" to clipboard
ocg_chat: ^0.0.22 copied to clipboard

discontinued
outdated

A new flutter plugin project.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:ocg_login/ocg_login.dart';
import 'package:ocg_user/ocg_user.dart';
import 'package:ocg_chat/ocg_chat.dart';
import 'package:ocg_app/ocg_app.dart';
import 'package:ocg_contact/ocg_contact.dart';
import 'package:http/http.dart' as http;

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';

  @override
  void initState() {
    super.initState();
  }

  LoginDatabase loginDatabase = LoginDatabase();

  @override
  Widget build(BuildContext context) {
    TokenRepository tokenRepository = LoginTokenRepository(loginDatabase);
    // tokenRepository.deleteToken();
    http.BaseClient client =
        ApiConfig(tokenRepository, 'http://13.234.77.216:8080/api/v1');
    UserRepository userRepository =
        UserNetworkRepository(tokenRepository, client);
    ContactRepository contactRepository =
        ContactNetworkRepository(client, userRepository);
    LoginRepository loginRepository =
        LoginNetworkRepository(tokenRepository, client);
    ChatRepository chatRepository =
        ChatNetworkRepository(client, userRepository);
    MessageRepository messageRepository =
        MessageNetworkRepository(client, userRepository, chatRepository);
    ChatSocket chatSocket = ChatSocket(
        'ws://13.234.77.216:8000/connection/websocket?format=protobuf',
        tokenRepository,
        chatRepository,
        messageRepository,
        client);
    Map<String, Widget Function(BuildContext context)> routes = {}
      ..addAll(LoginRoute.routes);
    routes.addAll(ChatRoute.routes);
    routes[ChatRouteType.chatsRoute] = (context) => ChatScreen(
          chatSocket: chatSocket,
        );
    return MultiBlocProvider(
      providers: [
        // Login
        BlocProvider<LoginBloc>(
          create: (context) => LoginBloc(loginRepository, userRepository),
        ),
        // Chat
        BlocProvider<ChatBloc>(
          create: (context) => ChatBloc(chatRepository, userRepository),
        ),
        BlocProvider<ChatUpdateBloc>(
          create: (context) => ChatUpdateBloc(
            chatRepository,
          ),
        ),
        BlocProvider<ChatCreateBloc>(
          create: (context) => ChatCreateBloc(chatRepository),
        ),
        BlocProvider<ChatSignalBloc>(
          create: (context) => ChatSignalBloc(chatRepository, userRepository),
        ),
        BlocProvider<MessageBloc>(
          create: (context) => MessageBloc(messageRepository, userRepository),
        ),
        // User
        BlocProvider<UserListBloc>(
          create: (context) => UserListBloc(userRepository),
        ),
        BlocProvider<ContactSyncBloc>(
          create: (context) => ContactSyncBloc(contactRepository),
        ),
        BlocProvider<ContactListBloc>(
          create: (context) => ContactListBloc(contactRepository),
        ),
      ],
      // Story
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
          visualDensity: VisualDensity.adaptivePlatformDensity,
        ),
        initialRoute: '/login/splash',
        home: MyHomePage(),
        routes: routes,
      ),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
  }

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    AppActionHandler.steam.listen((event) async {
      if (event == AppEvent.Home) {
        Navigator.of(context).popUntil((ModalRoute.withName('/')));
        Navigator.of(context).pushNamed(ChatRouteType.chatsRoute);
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold();
  }
}