【问题标题】:Retrieving the provider value gives null as its value检索提供者值将 null 作为其值
【发布时间】:2021-09-23 10:49:21
【问题描述】:

我创建了一个provider 来传递WidgetTree 中的值,但是当我尝试检索该值时,它给了我null 作为它的值。

初始化Provider的值:

              GetCurrentCourse course = GetCurrentCourse();
              course.currentCourse(
                courseID: courseID,
                courseDocID: courseDocID,
              );

下面是Provider相关的代码:

import 'package:flutter/material.dart';

class GetCurrentCourse extends ChangeNotifier {
  String? currentCourseID;
  String? currentCourseDocID;

  void currentCourse({courseID, courseDocID}) {
    this.currentCourseDocID = courseDocID;
    this.currentCourseID = courseID;
    print("Current Course ID is ${this.currentCourseID}");
    print("Current Course Doc ID is ${this.currentCourseDocID}");
    notifyListeners();
  }
}

当我打印上述GetCurrentCourse 类中的值时。我确实看到打印了正确的值。

以下代码展示了main.dart 文件中定义的Provider,如下所示:

        ChangeNotifierProvider<GetCurrentCourse>(
          create: (_) => GetCurrentCourse(),
        ),

下面是我尝试使用GetCurrentCourse Provider 的代码:

class CoursePageBody extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    print("Printing Value of Course from Provider");
    print(Provider.of<GetCurrentCourse>(context).currentCourseDocID);
    .
    .
  }
 }

现在,当我尝试访问 Provider 的值并尝试打印它时。它打印null

我可以尝试解决什么问题?

【问题讨论】:

  • 您能分享一下您插入提供程序的位置吗?

标签: flutter dart flutter-dependencies flutter-provider


【解决方案1】:

你的初始化代码应该是:

var courseProvider = Provider.of<GetCurrentCourse>(context, listen: false);
courseProvider.currentCourse(
  courseID: courseID,
  courseDocID: courseDocID,
);

并且要访问它的小部件应该包装在 Consumer 中,看起来像这样:

class CoursePageBody extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return Consumer<GetCurrentCourse>(
      builder: (context, courseProvider, child) {
       print("Printing Value of Course from Provider");
       print(courseProvider.currentCourseDocID);
       // rest of the code
     }
   );
  }
 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-06-24
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 2012-05-23
    • 1970-01-01
    • 2020-12-25
    • 1970-01-01
    相关资源
    最近更新 更多