未处理的异常:setState() 在构造函数中调用:

问题描述

我知道有很多类似的问题,但没有一个对我有帮助,这就是我发布这个问题的原因,所以请耐心等待。

我的屏幕是:

import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:manager/components/account.dart';

import 'package:manager/components/roundRectButton.dart';
import 'package:manager/constants.dart';
import 'package:manager/services/networking.dart';

// NetworkHelper networkHelper = NetworkHelper();
List<RoundRectButton> navigation = [
  RoundRectButton(
      'Volumes',() => _DashboardState().updateUI(Account().returnedData())),];

class Dashboard extends StatefulWidget {
  @override
  _DashboardState createState() => _DashboardState();
}

class _DashboardState extends State<Dashboard> {
  dynamic result;

  dynamic updateUI(fun) async {
    ListView temp = await fun;
    result = temp;
    // setState(() {
    //   result = temp;
    // });
  }

  @override
  void initState() {
    setState(() {
      result = Text('Hello');
    });
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        child: Column(
          children: <Widget>[
            SingleChildScrollView(
              scrollDirection: Axis.horizontal,child: Row(
                children: navigation,),Divider(
              color: kGreenColor,Padding(
              padding: EdgeInsets.all(10),child: result,],);
  }
}

使用 _DashboardState().updateUI(Account().returnedData()),我返回一个“Future”实例,然后在 updateUI 中将其转为 ListView。

如果我在 updateUI 中打印 temp 我得到:

ListView(scrollDirection:vertical,primary:使用主控制器,AlwaysScrollableScrollPhysics,shrinkWrap:shrink-wrapping)

所以我想这到目前为止有效。

问题是当我在 updateUI 中调用 setState() 时,出现错误

E/flutter ( 5156): [ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: setState() called in constructor: _DashboardState#6c793(lifecycle state: created,no widget,not mounted)
E/flutter ( 5156): This happens when you call setState() on a State object for a widget that hasn't been inserted into the widget tree yet. It is not necessary to call setState() in the constructor,since the state is already assumed to be dirty when it is initially created.
E/flutter ( 5156): #0      State.setState.<anonymous closure> (package:flutter/src/widgets/framework.dart:1255:9)
E/flutter ( 5156): #1      State.setState (package:flutter/src/widgets/framework.dart:1266:6)
E/flutter ( 5156): #2      _DashboardState.updateUI (package:manager/screens/dashboard.dart:32:5)
E/flutter ( 5156): <asynchronous suspension>

类似的代码在另一个项目中完美运行,让我发疯。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...