Flutter / Dart: как сделать логическое значение слушаемым с помощью ChangeNotifierProvider? - PullRequest
0 голосов
/ 14 июля 2020

Я использую ChangeNotifierProvider для предоставления логического значения, которое возвращает истину или ложь в зависимости от того, вошел ли пользователь в систему. Как сделать логическое значение доступным для прослушивания, чтобы поставщик обновлял его автоматически при входе / выходе пользователя?

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

1 Ответ

1 голос
/ 14 июля 2020

Лучший способ реализовать функциональность аутентификации с помощью провайдера - это заключить родительский класс в оболочку с помощью Provider. Например,

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

Таким образом, вы можете использовать поставщика где угодно из приложения, просто обернув дочерний виджет с помощью Consumer.

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

Поскольку проверка подлинности контролирует все само приложение, я обернул MaterialApp с Provider вы можете сделать это в любом виджете, чтобы все его дочерние элементы могли его использовать. Когда вы вызываете notifyListeners (); в провайдере он будет повторно отображать всю потребительскую часть.

...