gpt4 book ai didi

flutter - 无法从flutter中的其他类访问提供者类中的变量

转载 作者:行者123 更新时间:2023-12-03 04:57:23 29 4
gpt4 key购买 nike

我有以下类(class)

class AppState with ChangeNotifier{
Set<Polyline> _polylines = Set<Polyline>();
LocationData _currentLocation;

Set<Polyline> get polylines => _polylines;
LocationData get currentLocation => _currentLocation;

}

在我的main.dart中
void main() => runApp(
MultiProvider(

providers: [
ChangeNotifierProvider.value(value: AppState())
],
child: MyApp()),
);

然后我尝试在另一个类中访问它
...
@override
Widget build(BuildContext context) {
final appState = Provider.of<AppState>(context);

appState.currentLocation != null?Container():Text()
}
...


But the problem is that I get the error that
The getter 'currentLocation' isn't defined for the type 'AppState'.
Try importing the library that defines 'currentLocation', correcting the name to the name of an existing getter, or defining a getter or field named 'currentLocation'.

不能似乎在做什么错。我怎样才能解决这个问题

最佳答案

如官方文档中所述,您应该首先使用默认构造函数创建ChangeNotifier

Provider official documentation on Pub.dev

  • 不要在create内创建一个新的ChangeNotifier。

  • ChangeNotifierProvider(
    create: (_) => new MyChangeNotifier(),
    child: ...
    )
  • 不要使用ChangeNotifierProvider.value创建您的ChangeNotifier。

  • ChangeNotifierProvider.value(
    value: new MyChangeNotifier(),
    child: ...
    )
  • 不要使用可能随时间变化的变量来创建ChangeNotifier。

  • 在这种情况下,值更改时将永远不会更新您的ChangeNotifier。

    int count;

    ChangeNotifierProvider(
    create: (_) => new MyChangeNotifier(count),
    child: ...
    )

    如果要将变量传递给ChangeNotifier,请考虑使用ChangeNotifierProxyProvider。

    因此,您的 MultiProvider应该如下所示:

    void main() => runApp(
    MultiProvider(

    providers: [
    ChangeNotifierProvider(create: (context) => AppState())
    ],
    child: MyApp()),
    );

    关于flutter - 无法从flutter中的其他类访问提供者类中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60342270/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com