【问题标题】:Flutter 2 - Dark theme stateFlutter 2 - 深色主题状态
【发布时间】:2022-01-21 23:35:11
【问题描述】:

我是 Flutter 新手,我正在从头开始构建我的第一个 Flutter 2 项目。

我遇到了问题 -> themeMode: (state is ChangeThemeSuccess) ? (state.isDarkMode) ? ThemeMode.dark : ThemeMode.light : ThemeMode.light,

它说(state.isDarkMode) 无法识别

我该如何解决这个问题?

谢谢

main.dart

class MyApp extends StatelessWidget {
   const MyApp({Key? key}) : super(key: key);
   // This widget is the root of your application.
   @override
   Widget build(BuildContext context) {
   // Initialize all bloc provider used on this entire application here
   return MultiBlocProvider(
      providers: [
         // this bloc used for feature - change language
         BlocProvider<LanguageCubit>(
            create: (BuildContext context) => LanguageCubit(),
         ),
         // this bloc used to change theme on feature list
         BlocProvider<ThemeCubit>(
            create: (BuildContext context) => ThemeCubit(),
         ),
     ],
     
     child: InitialLanguage(
        child: BlocBuilder<LanguageCubit, LanguageState>(
           builder: (context, state) {
              return MaterialApp(
                 debugShowCheckedModeBanner: true,
                 scrollBehavior: CustomScrollBehavior(),
                 title: appName,
                 theme: ThemeData.light(),
                 darkTheme: ThemeData.dark(),
                 themeMode: (state is ChangeThemeSuccess)
                    ? (state.isDarkMode)
                    ? ThemeMode.dark
                    : ThemeMode.light
                    : ThemeMode.light,
          
             // below is used for language feature
             supportedLocales: const [
                Locale('en', 'US'),
                Locale('sv', 'SE'),
             ],
             
             localizationsDelegates: const [
                AppLocalizationsDelegate(),
                GlobalMaterialLocalizations.delegate,
                GlobalWidgetsLocalizations.delegate,
             ],
             // Returns a locale which will be used by the app
             locale: (state is ChangeLanguageSuccess)
                 ? state.locale
                 : const Locale('en', 'US'),
             home: const Navigation(),
        );
      },
    ),
  ),
);}}

theme_state.dart

@immutable
abstract class ThemeState {}

class ThemeInitial extends ThemeState {}

class ChangeThemeSuccess extends ThemeState {
   final bool isDarkMode;
   ChangeThemeSuccess(this.isDarkMode);
}

【问题讨论】:

  • BlocBuilder 这行是问题尝试将 LanguageState 更改为 ChangeThemeSuccess

标签: android ios flutter dart themes


【解决方案1】:
        child: BlocBuilder<LanguageCubit, LanguageState>(

您的 BlocBuilder 正在观看 LanguageState 而不是 ThemeState

【讨论】:

  • 有没有办法在不改变观看的情况下解决这个问题 - LanguageState 我不能以某种方式让 BlocBuilder 同时观看语言和主题吗?
猜你喜欢
  • 1970-01-01
  • 2021-06-16
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-12
  • 1970-01-01
  • 2019-05-10
相关资源
最近更新 更多