找不到正确的提供商

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();
  }
}