Untitled
unknown
dart
3 years ago
5.6 kB
41
Indexable
import 'dart:async';
import 'package:beamer/beamer.dart';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart' show kIsWeb;
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
AndroidNotificationChannel channel = const AndroidNotificationChannel(
'high_importance_channel', // id
'High Importance Notifications', // title
description:
'This channel is used for important notifications.', // description
importance: Importance.high,
playSound: true);
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin();
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {
await Firebase.initializeApp();
}
Future<void> main() async {
final client = StreamChatClient(
'ssscsacz',
logLevel: Level.INFO,
);
await dotenv.load(fileName: "dotenv");
WidgetsFlutterBinding.ensureInitialized();
await Firebase.initializeApp(
options: FirebaseOptions(
apiKey: dotenv.get("apiKey"),
authDomain: dotenv.get("authDomain"),
databaseURL: dotenv.get("databaseURL"),
projectId: dotenv.get("projectId"),
storageBucket: dotenv.get("storageBucket"),
messagingSenderId: dotenv.get("messagingSenderId"),
appId: dotenv.get("appId"),
measurementId: dotenv.get("measurementId")));
await ThemeModeBuilderConfig.ensureInitialized();
await Firebase.initializeApp();
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
await flutterLocalNotificationsPlugin
.resolvePlatformSpecificImplementation<
AndroidFlutterLocalNotificationsPlugin>()
?.createNotificationChannel(channel);
await FirebaseMessaging.instance.setForegroundNotificationPresentationOptions(
alert: true,
badge: true,
sound: true,
);
setPathUrlStrategy();
await Future.delayed(const Duration(milliseconds: 300));
await IdSharedPreferences.init();
runApp(MyWebAppSelector(
client: client,
)
);
}
class MyWebAppSelector extends StatefulWidget {
const MyWebAppSelector({Key? key, required this.client}) : super(key: key);
final StreamChatClient client;
@override
State<MyWebAppSelector> createState() => _MyWebAppSelectorState();
}
class _MyWebAppSelectorState extends State<MyWebAppSelector> {
@override
void initState() {
super.initState();
if (kIsWeb) {
web = true;
} else {
web = false;
}
}
@override
Widget build(BuildContext context) {
return web ? MyWebApp() : MyAndroidApp();
}
}
class MyAndroidApp extends StatefulWidget {
const MyAndroidApp({Key? key}) : super(key: key);
@override
State<MyAndroidApp> createState() => _MyAndroidAppState();
}
class _MyAndroidAppState extends State<MyAndroidApp> {
@override
Widget build(BuildContext context) {
return MaterialApp(
scrollBehavior: MyCustomScrollBehavior(),
themeMode: ThemeMode.light,
home: MobileWebView());
}
}
class MyWebApp extends StatefulWidget {
const MyWebApp({Key? key}) : super(key: key);
@override
_MyWebAppState createState() => _MyWebAppState();
}
SearchingApi searching = SearchingApi();
class _MyWebAppState extends State<MyWebApp> {
late BeamerDelegate routeDelegates;
@override
void initState() {
super.initState();
routeDelegates = BeamerDelegate(
locationBuilder: RoutesLocationBuilder(routes: {
'/chat': (context, state, data) {
var customwidth = MediaQuery.of(context).size.width * 0.95;
var customheight = MediaQuery.of(context).size.height * 0.95;
return CommonLayout(
false,
SizedBox(
height: customheight - 70,
child: ChatMainScreen()));
},
'/usersetting': (context, state, data) {
var customwidth = MediaQuery.of(context).size.width * 0.95;
var customheight = MediaQuery.of(context).size.height * 0.95;
return CommonLayout(
false,
SizedBox(
height: customheight - 70,
// width: customWidth,
child: SettingPage()));
},
}
@override
void didChangeDependencies() {
super.didChangeDependencies();
}
@override
void dispose() {
// TODO: implement dispose
super.dispose();
}
@override
Widget build(BuildContext context) {
cntxt = context;
return MultiProvider(
providers: [
],
child: MaterialApp.router(
builder: ((context, child) {
return StreamChatCore(client: streamClient, child: child!);
}),
routeInformationParser: BeamerParser(),
routerDelegate: routeDelegates,
useInheritedMediaQuery: true,
scrollBehavior: MyCustomScrollBehavior(),
themeMode: ThemeMode.light,
theme: ThemeData(
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
hoverColor: Colors.transparent,
),
),
);
}
}
Editor is loading...