使用提供程序从aync api获取并在ListBuilder上显示会出现此错误

时间:2019-10-01 20:11:53

标签: flutter

我建立了一个可以容纳一系列患者的医疗服务提供者。我也有一种获取这些患者的方法。因此,我所做的就是在didChangeDependencies方法上触发了该方法,并使用了使用者包装ListBuilder,但是当我调用aync方法并调用监听这些更改时,我遇到了这些错误。

在我调用该方法的地方,如果我将其侦听为true,实际上会冻结该应用程序。

    void didChangeDependencies() {
       setState(() {
       isFetchingDone = false;
              });

      Provider.of<Patients>(context,listen: false).fetchPatientsList();

    setState(() {
       isFetchingDone = true;
     });

}

我正在使用获取的列表的位置。

      Consumer<Patients>(
         builder: (context, patientsProvider, child) {
            return patientsProvider.isFetchingDone == true
                    ? buildPatientList(
                         list: patientsProvider.patients,
                        )
                        : Center(
                         child: LinearProgressIndicator(
                         backgroundColor: Colors.white,
                      ));
                  },
                ),

════════基础库捕获到异常════════ ══════════════════ 在为患者发送通知时引发了以下断言:enter code here 在构建过程中调用setState()或markNeedsBuild()。

不能将此ListenableProvider小部件标记为需要构建,因为该框架已经在构建小部件。仅当其某个祖先当前正在构建窗口小部件时,才可以将其标记为需要在构建阶段中构建。允许使用此异常是因为该框架在子代之前构建父窗口小部件,这意味着将始终构建脏后代。否则,框架在此构建阶段可能不会访问此窗口小部件。 调用setState()或markNeedsBuild()的小部件为:ListenableProvider   状态:_DelegateWidgetState#b917a 发出违规呼叫时当前正在构建的小部件是:Builder 引发异常时,这是堆栈:

0 Element.markNeedsBuild。 (包:flutter / src / widgets / framework.dart:3680:11)

1 Element.markNeedsBuild(package:flutter / src / widgets / framework.dart:3695:6)

2 State.setState(package:flutter / src / widgets / framework.dart:1161:14)

3 _ListenableDelegateMixin.startListening。 (package:provider / src / listenable_provider.dart:186:36)

4 ChangeNotifier.notifyListeners(package:flutter / src / foundation / change_notifier.dart:206:21)

... 发送通知的患者为:“患者”实例 ══════════════════════════════════════════════════ ══════════════════════════════════════════════════

════════(2)基础库捕获到异常Exception ═════════════════ 在构建期间调用setState()或markNeedsBuild()。 ══════════════════════════════════════════════════ ══════════════════════════════════════════════════

0 个答案:

没有答案