使用 BloC 切换主题。我做得对吗?
Switching theme with BloC. Am I doing right?
您好,我正在尝试使用 BloC 更改主题。但不确定这是否是最佳做法。
这是我的switch_theme_cubit.dart
class ThemeCubit extends Cubit<ThemeData> {
ThemeCubit() : super(AppTheme.lightTheme);
void switchTheme() {
state == AppTheme.lightTheme
? emit(AppTheme.darkTheme)
: emit(AppTheme.lightTheme);
}
}
和MaterialApp
部分main.dart
class App extends StatelessWidget {
const App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider(create: (context) => InternetConnectivityCubit()),
BlocProvider(create: (context) => CounterCubit()),
BlocProvider(create: (context) => ThemeCubit())
],
child: BlocBuilder<ThemeCubit, ThemeData>(
builder: (context, state) {
return MaterialApp(
title: Strings.appTitle,
theme: state,
debugShowCheckedModeBanner: false,
initialRoute: AppRouter.homeScreen,
onGenerateRoute: AppRouter.onGenerateRoute,
);
},
),
);
}
}
看起来像this(自述文件中gif 的第一部分)。我做得对吗?
是的,从技术上讲,这是绝对正确的。
我建议您将模式设置为 three-state。浅色、深色和系统默认值。
当我将我的设备设置为深色模式时,我希望我的所有应用程序都默认进入深色模式。我不想打开所有 37 个应用程序并找到设置并单独切换它们。默认应该是,如果我没有明确设置它,它将采用我在系统设置中设置的值。
您好,我正在尝试使用 BloC 更改主题。但不确定这是否是最佳做法。
这是我的switch_theme_cubit.dart
class ThemeCubit extends Cubit<ThemeData> {
ThemeCubit() : super(AppTheme.lightTheme);
void switchTheme() {
state == AppTheme.lightTheme
? emit(AppTheme.darkTheme)
: emit(AppTheme.lightTheme);
}
}
和MaterialApp
部分main.dart
class App extends StatelessWidget {
const App({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiBlocProvider(
providers: [
BlocProvider(create: (context) => InternetConnectivityCubit()),
BlocProvider(create: (context) => CounterCubit()),
BlocProvider(create: (context) => ThemeCubit())
],
child: BlocBuilder<ThemeCubit, ThemeData>(
builder: (context, state) {
return MaterialApp(
title: Strings.appTitle,
theme: state,
debugShowCheckedModeBanner: false,
initialRoute: AppRouter.homeScreen,
onGenerateRoute: AppRouter.onGenerateRoute,
);
},
),
);
}
}
看起来像this(自述文件中gif 的第一部分)。我做得对吗?
是的,从技术上讲,这是绝对正确的。
我建议您将模式设置为 three-state。浅色、深色和系统默认值。
当我将我的设备设置为深色模式时,我希望我的所有应用程序都默认进入深色模式。我不想打开所有 37 个应用程序并找到设置并单独切换它们。默认应该是,如果我没有明确设置它,它将采用我在系统设置中设置的值。