首页 > 解决方案 > Flutter 如何将 Provider 的价值取出来

问题描述

我的代码中有这个提供者。它假设返回列表

class ServingProvider extends ChangeNotifier {
  List<Serving> servings = [];

  getServings() {
    Firestore.instance
        .collection('servings')
        .getDocuments()
        .then((value) => value.documents)
        .then((value) =>
            value.map((serving) => Serving.fromJson(serving.data)).toList())
        .then((value) => servings.addAll(value))
        .then((value) => notifyListeners());
    print(servings);
  }

  // List<Serving> get servings => servings;
}

我想在这里获得价值,但由于某种原因我得到了空值。

class KMultiScrollWheel extends StatelessWidget {
  final String title;
  final String value;
  final BuildContext passedContext;
  final String dialogTitle;

  KMultiScrollWheel({
    @required this.title,
    this.value,
    @required this.passedContext,
    this.dialogTitle,
  });

  @override
  Widget build(BuildContext context) {
    final servings = Provider.of<ServingProvider>(context).servings;
    print(servings)

这是我班级的包装。

ChangeNotifierProvider(
                  create: (_) => ServingProvider(),
                  child: KMultiScrollWheel(
                    title: 'Serving Size',
                    passedContext: context,
                    dialogTitle: 'Select Serving',
                  ),
                ),

我来自反应,我完全迷失了应该相当简单的事情。提前致谢。

最后一个问题是,当我可以访问顶部已经声明的服务时,使用 get 方法有什么意义。

标签: flutterflutter-provider

解决方案


当您使用实时数据库时,请使用StreamProvider代替ChangeNotifierProvider,这篇中篇文章可以帮助您


推荐阅读