import 'package:demo001/gen/assets.gen.dart'; import 'package:demo001/generated/l10n.dart'; import 'package:demo001/scenes/home/home_view.dart'; import 'package:demo001/scenes/translate/TranslateScene.dart'; import 'package:demo001/tools/color_utils.dart'; import 'package:flutter/material.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; import 'package:get/get.dart'; import 'package:flutter_easyloading/flutter_easyloading.dart'; import 'scenes/login/login_view.dart'; void main() { WidgetsFlutterBinding.ensureInitialized(); EasyLoading.instance ..indicatorType = EasyLoadingIndicatorType.threeBounce ..maskType = EasyLoadingMaskType.black ..progressColor = Colors.white ..backgroundColor = const Color.fromRGBO(38, 38, 38, 1) ..indicatorColor = Colors.white ..textColor = Colors.white ..userInteractions = false ..displayDuration = 1.5.seconds ..dismissOnTap = false; runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); // This widget is the root of your application. @override Widget build(BuildContext context) { return GetMaterialApp( locale: Get.deviceLocale, fallbackLocale: Get.deviceLocale, title: '智能耳机', debugShowCheckedModeBanner: false, defaultTransition: Transition.rightToLeft, theme: ThemeData( colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple), useMaterial3: true, appBarTheme: const AppBarTheme( centerTitle: true, iconTheme: IconThemeData(color: whiteGrey), surfaceTintColor: white, shape: Border(bottom: BorderSide(color: lightBlue, width: 1)), backgroundColor: bgColor, ), scaffoldBackgroundColor: bgColor, splashColor: clean, highlightColor: clean, switchTheme: SwitchThemeData( trackOutlineColor: const WidgetStatePropertyAll(blue), trackColor: WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.selected)) { return blue; } else { return silver.withOpacity(0.5); } }), thumbColor: WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.selected)) { return white; } else { return silver; } }), trackOutlineWidth: const WidgetStatePropertyAll(0)), navigationBarTheme: NavigationBarThemeData()), localizationsDelegates: { S.delegate, GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, GlobalWidgetsLocalizations.delegate, }, supportedLocales: S.delegate.supportedLocales, home: LoginScene(), builder: (context, widget) { final easyload = EasyLoading.init(); var child = easyload(context, widget); return MediaQuery( data: MediaQuery.of(context).copyWith(textScaler: TextScaler.noScaling), child: child, ); }, ); } } S? s; class IndexWidget extends StatelessWidget { final RxInt _currentIndex = 0.obs; final List _pages = [HomePage()]; @override Widget build(BuildContext context) { return Scaffold( body: Obx(() => _pages[_currentIndex.value]), bottomNavigationBar: Builder(builder: (context) { s = S.of(context); return Obx(() => BottomNavigationBar( type: BottomNavigationBarType.fixed, backgroundColor: bottomNavBg, currentIndex: _currentIndex.value, selectedItemColor: white, unselectedItemColor: grey, items: [ BottomNavigationBarItem( icon: Assets.icon.bottomNavHomeUnselect .image(width: 20, height: 20), activeIcon: Assets.icon.bottomNavHomeSelect .image(width: 20, height: 20), label: s?.bottomNavHome), BottomNavigationBarItem( icon: Assets.icon.bottomNavSleepUnselect .image(width: 20, height: 20), activeIcon: Assets.icon.bottomNavSleepSelect .image(width: 20, height: 20), label: s?.bottomNavSleep), BottomNavigationBarItem( icon: Assets.icon.bottomNavProfileUnselect .image(width: 20, height: 20), activeIcon: Assets.icon.bottomNavProfileSelect .image(width: 20, height: 20), label: s?.bottomNavProfile), ], onTap: (index) { _currentIndex.value = index; }, )); })); } }