Skip to content

Instantly share code, notes, and snippets.

@mrasityilmaz
Created December 29, 2023 11:03
Show Gist options
  • Save mrasityilmaz/86a8e3d52ed2be7cb627e93ced638e4e to your computer and use it in GitHub Desktop.
Save mrasityilmaz/86a8e3d52ed2be7cb627e93ced638e4e to your computer and use it in GitHub Desktop.
import 'dart:async';
import 'dart:io';
import 'package:firebase_core/firebase_core.dart';
import 'package:firebase_messaging/firebase_messaging.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';
import 'package:get/get.dart';
import 'package:google_mobile_ads/google_mobile_ads.dart';
import 'package:kakao_flutter_sdk/kakao_flutter_sdk.dart';
import 'package:myapp/firebase.dart';
import 'package:myapp/user/login/screen/kakao_login.dart';
import 'package:provider/provider.dart';
import 'package:restagram_mobile_app/presentation/utils/components/menu_components/common/css.dart';
import 'package:restagram_mobile_app/presentation/utils/components/menu_components/common/storage.dart';
import 'package:restagram_mobile_app/presentation/utils/components/menu_components/common/theme_provider.dart';
import 'package:restagram_mobile_app/presentation/utils/components/menu_components/common/util.dart';
import 'package:restagram_mobile_app/presentation/utils/components/menu_components/firebase_options.dart';
import 'package:shared_preferences/shared_preferences.dart';
StreamController<String> streamController = StreamController.broadcast();
Future<void> _firebaseMessagingBackgroundHandler(RemoteMessage message) async {}
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
ThemeMode themeMode = ThemeMode.light;
try {
KakaoSdk.init(nativeAppKey: kakaonativekey);
await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform);
FirebaseMessaging.onBackgroundMessage(_firebaseMessagingBackgroundHandler);
final String firebasetoken = (await FirebaseMessaging.instance.getToken())!;
MobileAds.instance.initialize();
await SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
final prefs = await SharedPreferences.getInstance();
final bool? isDark = prefs.getBool('DarkMode');
if (isDark == true) themeMode = ThemeMode.dark;
await prefs.setString('firebasetoken', firebasetoken);
if (Platform.isAndroid) {
await prefs.setString('ostype', 'Aos');
} else if (Platform.isIOS) {
await prefs.setString('ostype', 'Ios');
}
} catch (e) {}
runApp(
ScreenUtilInit(
designSize: const Size(360, 690),
builder: (context, child) {
return MyApp(themeMode: themeMode);
},
),
);
}
class MyApp extends StatelessWidget {
const MyApp({
required this.themeMode,
super.key,
});
final ThemeMode themeMode;
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => ThemeProvider(initThemeMode: themeMode),
),
],
builder: (context, _) {
return GetMaterialApp(
initialBinding: BindingsBuilder.put(
NotificationController,
permanent: true,
),
darkTheme: darkThemes,
theme: whiteTheme,
themeMode: Provider.of<ThemeProvider>(context).themeMode,
builder: (context, child) {
return MediaQuery(
data: MediaQuery.of(context).copyWith(),
child: child!,
);
},
home: const KaKaoLogin(),
);
},
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment