问题描述
几个星期前,我成功地更改了主题,但是由于更新颤动,它不再起作用。
BlocProvider不再起作用,我的Cubit也不再起作用。我只是不明白发生了什么变化。
我的肘部收到如下错误:.....
'ThemeCubit'不扩展'Bloc
我的主题手肘..
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),);
}
}
正如我所说,上周工作正常,但不幸的是已停止工作,我不确定为什么。
任何帮助将不胜感激。谢谢。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)