【问题标题】:Flutter BlocProvider value something wrongFlutter BlocProvider 值有问题
【发布时间】:2022-01-03 11:52:48
【问题描述】:

在我使用提供者之前,我新建了一个 bloc/cubit 模式,getx 并且我想问一些事情。

这个应用程序有近 40 页,我想使用 bloc 仅 10 页并在最后一页关闭时关闭 bloc 实例。

示例页面 1,我初始化 bloc,它在其他页面(2、3、4...9)上初始化将使用相同的 bloc/cubit 实例和 10 页关闭 bloc 实例关闭

这是路由器类和cubit在这里初始化

    class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    final RegisterCubit _registerCubit = RegisterCubit();
    switch (settings.name) {
      case welcomeRoute:
        return MaterialPageRoute(builder: (_) => WelcomePage());
      case loginRoute:
        return MaterialPageRoute(builder: (_) => LoginPage());
      case homeRoute:
        return MaterialPageRoute(builder: (_) => HomePage());
      case referanceCodePreview:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: ReferancaCodePreviewView(),
                ));
      case registerOne:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageOne(),
                ));
      case registerTwo:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageOTwo(),
                ));
      case registerThree:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageOThree(),
                ));
      case registerFour:
        return MaterialPageRoute(
            builder: (_) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageFour(),
                ));
      case registerFive:
        return MaterialPageRoute(
            builder: (a) => BlocProvider.value(
                  value: _registerCubit,
                  child: RegisterPageFive(),
                ));

本页四和本页不听_registerCubit

class RegisterPageFour extends StatefulWidget   {
  RegisterPageFour({Key? key}) : super(key: key);

  @override
  State<RegisterPageFour> createState() => _RegisterPageFourState();
}

class _RegisterPageFourState extends State<RegisterPageFour> with
ImageSelectPicker {
  @override
  Widget build(BuildContext context) {
    return  BlocConsumer<RegisterCubit, RegisterState>(
        listener: (contex, state) {},
        builder: (context, state) {
          return buildScaffold(context, state);
        },
      );
  }

导航第四页

 CustomButton(
            buttonWidth: MediaQuery.of(context).size.width,
            onPress: () => Navigator.pushNamed(context, "/registerFour"),
            title: "İleri"),

你能帮我解决这个问题吗?

【问题讨论】:

  • 您能否将声明导航的部分代码添加到RegisterPageFour
  • 我编辑代码
  • 您在Router 中有RegisterPageFour 声明吗?
  • 是的,我编辑了代码

标签: flutter dart bloc cubit


【解决方案1】:
final RegisterCubit _registerCubit = RegisterCubit();

我建议你在 generateRoute 函数之外创建 RegisterCubit 对象。 像这样的,

class Router {
 final RegisterCubit _registerCubit = RegisterCubit();
 static Route<dynamic> generateRoute(RouteSettings settings) {
 switch (settings.name) {
 }

【讨论】:

    猜你喜欢
    • 2020-07-21
    • 2020-11-27
    • 2021-07-09
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2022-01-23
    相关资源
    最近更新 更多