Лучший способ реализовать функциональность аутентификации с помощью провайдера - это заключить родительский класс в оболочку с помощью 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 (); в провайдере он будет повторно отображать всю потребительскую часть.