Я использовал пакет провайдера для управления состоянием приложений флаттера, но у меня много проблем с его использованием. я определил простого поставщика, который имеет одну логическую переменную и один метод, которые изменяют значение переменной
class LoadingModel with ChangeNotifier{
bool is_loading=false;
changeLoadingState(){
is_loading = !is_loading;
notifyListeners();
}}
, теперь я хочу вызвать метод changeLoadingState (), который определен в поставщике из класса MyApp на главной странице, и вот код главной страницы
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return ChangeNotifierProvider(
create: (context) => LoadingModel(),
child: MaterialApp(
home:Scaffold(
body: Center(
child: Wrap(children: [
Column(children: [
RaisedButton(
child: Text("hide the progress"),
onPressed: () {
Provider.of(context,listen: false).changeLoadingState();
},
)
],)
],)
),
)
),
);
}
}
, но когда я запускаю приложение, отображается консоль
Ошибка: не удалось найти правильный поставщик выше этого виджета MyApp
Исправить , пожалуйста:
- Убедитесь, что поставщик является предком этого виджета MyApp
- Предоставьте типы поставщику
- Предоставьте типы потребителю
- Предоставьте типы to Provider.of ()
- Всегда использовать импорт пакетов. Пример: `import 'package: my_app / my_code.dart';
- Убедитесь, что используется правильный
context
.
Если ни одно из этих решений не работает, пожалуйста, сообщите об ошибке в: https://github.com/rrousselGit/provider/issues
как я могу решить эту проблему ???