ocg_chat 0.0.18
ocg_chat: ^0.0.18 copied to clipboard
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();
}
}