我使用Flutter BloC
。
我有两个块需要应用到应用程序(主题和语言)。
我使用MultiBlocProvider
和Builder
来尽可能地清除代码。
问题是,当我按下本地化屏幕和主题屏幕中的按钮时,应用程序不会重新构建
但当我重新启动应用程序时,我发现我按下的状态存储在共享首选项中
示例当前状态是黑暗主题,我按下轻主题按钮,应用程序仍然在黑暗主题,当我重新启动应用程序,它是在轻主题打开.
我该如何解决这个问题
我将代码添加到GitHub上的以下链接
https://github.com/MaxJan2010/flutter_bloc_starting_project
有人能帮忙吗?
4条答案
按热度按时间nlejzf6q1#
我忘记传递
appThemeType
和languageCode
的变量的问题所以,覆盖 prop 是解决方案
本地化状态:
https://github.com/MaxJan2010/flutter_bloc_starting_project/blob/ed2c632d708bb74438290c87168990c88be02d2c/lib/logic/utility/app_localization/localization_state.dart#L24
在主题状态下,
https://github.com/MaxJan2010/flutter_bloc_starting_project/blob/ed2c632d708bb74438290c87168990c88be02d2c/lib/logic/utility/app_theme/app_theme_state.dart#L21C1-L22C48
bmp9r5qi2#
使用ThemeBlocBuilder Package 主题,使用LocaleBlocBuilder Package 区域设置,这将使屏幕随着状态的变化而更新
4ngedf3f3#
您可以更有效地使用BlocBuilder小部件。下面是代码:
gcxthw6b4#
在MaterialApp Widget上使用BlocBuilder