如何根据bool值在Auth屏幕和Home屏幕之间切换



我想根据下面模型类的布尔值(user.status(在登录屏幕和主屏幕之间切换

class User extends ChangeNotifier {
int phoneNumber;
bool status = false;
notifyListeners();
}

bool User.status值从函数下方翻转

User _user = Provider.of<User>(context);
...
...
if (form.validate()) {
_user.status = true;
}

下面的函数必须监听User模型中状态值的变化,并将屏幕更改为Home((。

class Wrapper extends StatelessWidget {
@override
Widget build(BuildContext context) {
User authStatus = Provider.of<User>(context);
return authStatus.status ? Home() : Auth();
}
}

我没有任何错误,所有的值都在相应地更新,但Wrapper((在听取ChangeNotifier 的更改后没有重建

以下是我如何使用提供程序:

routes: {
"/": (context) => MainPage(),
"/detail": (context) => UserDetailPage(),
},
builder: (context, child) {
return Consumer<UsersProvider>(
child: child,
builder: (context, provider, child) {
final value = provider.user;
if (!value.status) {
return Navigator(
onGenerateRoute: (settings) => MaterialPageRoute(
settings: settings, builder: (context) => LoginPage()),
);
}
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (context) => UsersProvider()),
ChangeNotifierProvider(
create: (context) => InvoicesProvider()),
ChangeNotifierProvider(create: (context) => EventsProvider()),
],
child: child,
);
},
);
},

基本上在main.dart中使用构建器并定义路由,然后在构建器内部使用Consumer are child是初始路由MainPage(),所以如果用户已经登录,他们将转到那里,如果没有,他们将根据状态重定向到LoginPage()。我希望你能理解,随时评论

相关内容

  • 没有找到相关文章

最新更新