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

标签 flutter dart provider flutter-change-notifier

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

class User extends ChangeNotifier {
  int phoneNumber;
  bool status = false;
  notifyListeners();
}
bool(boolean) 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();
  }
}
我没有任何错误,所有值都在相应地更新,但是在侦听ChangeNotifier的更改后未重建Wrapper()

最佳答案

这是我使用Provider的方法:

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中使用builder并定义路由,然后在builder use内使用Consumer is child是初始路由MainPage(),因此,如果用户已经登录,则他们将转到那里,否则,将基于状态将其重定向到LoginPage()。希望您能理解,随时发表评论

关于flutter - 如何根据bool值在Auth屏幕和Home屏幕之间切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63468756/

相关文章:

flutter - 如何根据屏幕尺寸抖动设置小部件位置

flutter - Flutter-如何对齐文本和图像小部件?

android - 如何在 Flutter 的 TextField 中显示错误图标

java - 通过算法显示所有 JAC 安全提供商及其服务类型

android - 如果使用 android 工具来重命名包名称而不会出现任何错误/冲突

flutter - bool.fromEnvironment 总是返回 false

flutter - 如何根据用户偏好在 Flutter 中选择日期格式

flutter - 在 flutter 中捏合缩放 ListView

dart - 从抽屉路由到新主体不起作用

javascript - 无法在 ionic 3 的多个页面中注入(inject)提供程序