【问题标题】:ChangeNotifier isn't recognized by provider package提供程序包无法识别 ChangeNotifier
【发布时间】:2021-01-18 19:30:44
【问题描述】:

所以我有这个简单的代码:

import 'package:provider/provider.dart';

class DataModel with ChangeNotifier{
  bool _isLoading = true;

  set isLoading(bool value){
    _isLoading = value;
    notifyListeners();
  }

  get isLoading => _isLoading;
}

ChangeNotifier 和 notifyListeners() 无法识别。

我的依赖:

dependencies:
  flutter:
    sdk: flutter

  flutter_localizations:
    sdk: flutter

  provider: ^4.3.3

我很困惑为什么会这样,这是安装页面中的确切设置(并且在其他项目中也有效)。

这个项目也连接了一个git lab项目,不知道有没有关系。

顺便说一句,它与提供程序包中的其他关键字不同 - 它完全识别 ChangeNotifierProvider 即

【问题讨论】:

  • 您在哪里提供和使用您的DataModel
  • @AdnanAlshami 目前我不使用 consume 关键字,我使用 ChangeNotifierProvider 并在其中执行此操作:create: (context) => DataModel(),

标签: flutter dart


【解决方案1】:

您导入的包不正确,正确的是package:flutter/foundation.dartpackage:flutter/material.dart,请尝试:

import 'package:flutter/material.dart';

class DataModel with ChangeNotifier{
  bool _isLoading = true;

  set isLoading(bool value){
    _isLoading = value;
    notifyListeners();
  }

  get isLoading => _isLoading;
}

package:provider/provider.dart 用于调用提供程序的文件中,而不是定义它的位置。

请参阅文档中的示例:https://github.com/flutter/samples/blob/master/provider_shopper/lib/models/cart.dart

提示,在 VS Code 中,如果你右键单击ChangeNotifier 并选择 Go to Definition,可以将定义追溯到基础包。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-31
    • 2014-05-18
    • 2017-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 2018-11-23
    相关资源
    最近更新 更多