Flutter/Dart:如何使用 ChangeNotifierProvider 使布尔值可监听?

Flutter/Dart: How to make a Boolean Listenable with the ChangeNotifierProvider?

我正在使用 ChangeNotifierProvider 来提供一个布尔值,该布尔值 returns true 或 false 取决于用户是否登录。如何使布尔值可侦听以便提供程序在用户登录时自动更新它in/out?

Widget build(BuildContext context) {
var socialProvider = Provider.of<SocialProvider>(context);
return Container(  
           child: new FlatButton(
           onPressed: () {
               if (
                  socialProvider.currentlogged != true
                  ) {                        
       Do something
             } else {
        Do something else
                      },
),}

使用提供程序实现身份验证功能的最佳方法是使用提供程序包装您的父级 class。例如,

MultiProvider(
    providers: [
      ChangeNotifierProvider(
        create: (_) => Authentication(),
      ),
      )
    ],
    child: MaterialApp(
          ........
    ),

通过这种方式,您只需使用 Consumer 包装子小部件,就可以从应用程序的任何位置使用 Provider。

Consumer<Authentication>(
      builder: (context, auth, _) => Container(  
       child: new FlatButton(
       onPressed: () {
           if (auth.currentlogged != true) {                        
             Do something
         } else { 
             Do something else
         }

由于身份验证控制整个应用程序本身,我用 Provider 包装了 MaterialApp,您可以在任何小部件中执行此操作,以便它的所有子项都可以使用它。 当您调用 notifyListeners();在提供者中,它将重新呈现整个消费者部分。