被Cubit Bloc困惑,工作正常,但现在不行

问题描述

几个星期前,我成功地更改了主题,但是由于更新颤动,它不再起作用。

BlocProvider不再起作用,我的Cubit也不再起作用。我只是不明白发生了什么变化。

我的肘部收到如下错误:.....

'ThemeCubit'不扩展'Bloc '。 尝试使用类型为'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 (将#修改为@)