找不到正确的提供商
Could not find correct provider
我开始学习 Flutter,我正在尝试使用 provider。
我已经学习了一些教程,现在开始我的副项目,但我遇到了这些错误:
Error: Could not find the correct Provider<CultivatorModel> above this CultivatorComponent Widget
当我用 Multiproviders 包装 MaterialApp 时,它应该在祖先中......这个错误对我来说没有意义,我肯定是新手,我错过了一些明显的东西......
无论如何,这是我的代码,感谢您的帮助。
main.dart
import 'package:provider/provider.dart';
import 'package:flutter_app/components/cultivator_component.dart';
import 'package:flutter_app/models/incarnation_model.dart';
import 'package:flutter_app/models/cultivator_model.dart';
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(builder: (context) => IncarnationModel()),
ChangeNotifierProvider(builder: (context) => CultivatorModel()),
],
child: GameApp())
);
}
class GameApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CultivatorComponent(),
);
}
}
cultivator_component.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_app/Models/cultivator_model.dart';
class CultivatorComponent extends StatelessWidget{
@override
Widget build(BuildContext context) {
final cultivatorModel = Provider.of<CultivatorModel>(context);
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('${cultivatorModel.cultivator.name} is here')
],
),
);
}
}
cultivator_model
import 'package:flutter/foundation.dart';
import 'package:flutter_app/domain/cultivator.dart';
import 'package:flutter_app/domain/incarnation.dart';
class CultivatorModel with ChangeNotifier{
Cultivator _cultivator;
Cultivator get cultivator => _cultivator;
CultivatorModel(){
_cultivator = Cultivator("MyCultivator");
}
bool canCreateIncarnation() => _cultivator.canCreateIncarnation();
void addIncarnation(Incarnation incarnation){
_cultivator.incarnations.add(incarnation);
notifyListeners();
}
}
这是我的版本的工作原理,我没有做任何重大更改,我的配置是 IntelliJ Idea、Flutter 1.9.1+hotfix.6 • 通道稳定和 iOS 虚拟设备
如果您对 运行 下一个代码有任何疑问,请与我联系,我会尽力提供帮助。
import 'dart:core';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(builder: (context) => AnotherModel()),
ChangeNotifierProvider(builder: (context) => CultivatorModel()),
],
child: GameApp())
);
}
class GameApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CultivatorComponent(),
);
}
}
class CultivatorComponent extends StatelessWidget{
@override
Widget build(BuildContext context) {
final cultivatorModel = Provider.of<CultivatorModel>(context);
final anotherModel = Provider.of<AnotherModel>(context);
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('${cultivatorModel.cultivator} is here'),
Text('${anotherModel.modelNum} is here')
],
),
);
}
}
class CultivatorModel with ChangeNotifier{
String _cultivator;
String get cultivator => _cultivator;
CultivatorModel(){
_cultivator = "MyCultivator";
}
void addIncarnation(String incarnation){
_cultivator = incarnation;
notifyListeners();
}
}
class AnotherModel with ChangeNotifier{
int _modelNum;
int get modelNum => _modelNum;
AnotherModel(){
_modelNum = 55;
}
void changeNumber(int num){
_modelNum = num;
notifyListeners();
}
}
我开始学习 Flutter,我正在尝试使用 provider。 我已经学习了一些教程,现在开始我的副项目,但我遇到了这些错误:
Error: Could not find the correct Provider<CultivatorModel> above this CultivatorComponent Widget
当我用 Multiproviders 包装 MaterialApp 时,它应该在祖先中......这个错误对我来说没有意义,我肯定是新手,我错过了一些明显的东西......
无论如何,这是我的代码,感谢您的帮助。
main.dart
import 'package:provider/provider.dart';
import 'package:flutter_app/components/cultivator_component.dart';
import 'package:flutter_app/models/incarnation_model.dart';
import 'package:flutter_app/models/cultivator_model.dart';
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(builder: (context) => IncarnationModel()),
ChangeNotifierProvider(builder: (context) => CultivatorModel()),
],
child: GameApp())
);
}
class GameApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CultivatorComponent(),
);
}
}
cultivator_component.dart
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_app/Models/cultivator_model.dart';
class CultivatorComponent extends StatelessWidget{
@override
Widget build(BuildContext context) {
final cultivatorModel = Provider.of<CultivatorModel>(context);
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('${cultivatorModel.cultivator.name} is here')
],
),
);
}
}
cultivator_model
import 'package:flutter/foundation.dart';
import 'package:flutter_app/domain/cultivator.dart';
import 'package:flutter_app/domain/incarnation.dart';
class CultivatorModel with ChangeNotifier{
Cultivator _cultivator;
Cultivator get cultivator => _cultivator;
CultivatorModel(){
_cultivator = Cultivator("MyCultivator");
}
bool canCreateIncarnation() => _cultivator.canCreateIncarnation();
void addIncarnation(Incarnation incarnation){
_cultivator.incarnations.add(incarnation);
notifyListeners();
}
}
这是我的版本的工作原理,我没有做任何重大更改,我的配置是 IntelliJ Idea、Flutter 1.9.1+hotfix.6 • 通道稳定和 iOS 虚拟设备
如果您对 运行 下一个代码有任何疑问,请与我联系,我会尽力提供帮助。
import 'dart:core';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
void main() {
runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(builder: (context) => AnotherModel()),
ChangeNotifierProvider(builder: (context) => CultivatorModel()),
],
child: GameApp())
);
}
class GameApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: CultivatorComponent(),
);
}
}
class CultivatorComponent extends StatelessWidget{
@override
Widget build(BuildContext context) {
final cultivatorModel = Provider.of<CultivatorModel>(context);
final anotherModel = Provider.of<AnotherModel>(context);
return Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('${cultivatorModel.cultivator} is here'),
Text('${anotherModel.modelNum} is here')
],
),
);
}
}
class CultivatorModel with ChangeNotifier{
String _cultivator;
String get cultivator => _cultivator;
CultivatorModel(){
_cultivator = "MyCultivator";
}
void addIncarnation(String incarnation){
_cultivator = incarnation;
notifyListeners();
}
}
class AnotherModel with ChangeNotifier{
int _modelNum;
int get modelNum => _modelNum;
AnotherModel(){
_modelNum = 55;
}
void changeNumber(int num){
_modelNum = num;
notifyListeners();
}
}