flutter - 被 Cubit Bloc 弄糊涂了,工作正常,但现在不行
问题描述
几周前我的主题被成功更改,但是自从更新颤振后它不再起作用。
BlocProvider 不再起作用,我的 Cubit 也不再起作用。我只是无法理解发生了什么变化。
我收到肘部错误如下.....
'ThemeCubit' 不扩展 'Bloc<Object, Object>'。尝试使用“Bloc<Object, Object>”的子类或子类。
我的主题肘..
class ThemeCubit extends Cubit<ThemeState> {
ThemeCubit() : super(ThemeStateInitial(themeData: appThemeData.values.first));
bool themeChanged = false;
void changeTheme() {
themeChanged = !themeChanged;
final newTheme = themeChanged == false
? appThemeData.values.first
: appThemeData.values.last;
emit(ThemeStateChanged(themeData: newTheme));
}
}
我的主题状态
abstract class ThemeState {
const ThemeState();
}
class ThemeStateInitial extends ThemeState {
final ThemeData themeData;
const ThemeStateInitial({this.themeData});
@override
bool operator ==(Object o) {
if (identical(this, o)) return true;
return o is ThemeStateInitial && o.themeData == themeData;
}
@override
int get hashCode => themeData.hashCode;
}
class ThemeStateChanged extends ThemeState {
final ThemeData themeData;
const ThemeStateChanged({this.themeData});
@override
bool operator ==(Object o) {
if (identical(this, o)) return true;
return o is ThemeStateChanged && o.themeData == themeData;
}
@override
int get hashCode => themeData.hashCode;
}
我的用户界面
class AppWidget extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider(
create: (context) => ThemeCubit(),
child: BlocBuilder<ThemeCubit, ThemeState>(
builder: (context, state) {
SystemChrome.setSystemUIOverlayStyle(SystemUiOverlayStyle(
systemNavigationBarColor: state.themeData == ThemeData.dark() ? Colors.black : Colors.white, // navigation bar color
statusBarColor: state.themeData == ThemeData.dark() ? Colors.white : Colors.black, // status bar color
));
return MaterialApp(
title: 'Material App',
theme: state.themeData ??= appThemeData.values.first,
home: const Scaffold(
appBar: PreferredSize(
preferredSize: Size.fromHeight(65.0),
child: AppBar(mainMenuDisplayed: false),
),
),
);
}),
);
}
}
我的按钮...
class TrialButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return BlocProvider.value(
value: BlocProvider.of<ThemeCubit>(context),
child: Container(
width: 100,
height: 50,
child: RaisedButton(
textColor: Colors.white,
onPressed: () {
debugPrint("button pressed");
final themeCubit = context.bloc<ThemeCubit>();
themeCubit.changeTheme();
},
child: Text('PRESS', style: Theme.of(context).textTheme.headline1),
),
),
);
}
}
正如我所说,上周工作正常,但不幸的是已经停止工作,我不确定为什么。
任何帮助将不胜感激。谢谢。
解决方案
推荐阅读
- spring-boot - 在 BeanFactoryPostProcessor 中,如何访问 application.properties 中的变量
- opencv - 如何从单应性RANSAC中消除无效的四边形匹配?
- checkbox - 复选框角材质修改样式,不使用(已弃用)/deep/、>>> 和 ::ng-deep
- java - 如何同时使用相机预览和手电筒?
- java - 带有 Java RESTl 服务的 Nginx
- html - 仅在 IOS 上的按钮错误
- jquery - 单日里程碑甘特图
- dynamics-crm - 更改派对列表中 +New 按钮的行为
- spring - 使用 Mockito 测试 @ConfigurationProperties
- python - JSON转储格式化python