Untitled
unknown
dart
2 years ago
5.6 kB
28
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...