Flutter BlocProvider值有问题



在使用provider、getx之前,我新建了一个bloc/cubit模式,我想问一些问题。

这个应用程序有将近40页,我想只使用10页的区块,并在最后一页关闭时关闭区块实例。

示例页面1,我初始化区块,并且它在其他页面上初始化(2,3,4…9(将使用相同的区块/立方体实例和10页关闭区块实例关闭

这是路由器类和立方体在这里初始化

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"),

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

final RegisterCubit _registerCubit = RegisterCubit();

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

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

最新更新