【问题标题】:Flutter: How to change FutureBuilder connection.state [closed]Flutter:如何更改 FutureBuilder connection.state [关闭]
【发布时间】:2020-12-10 18:34:16
【问题描述】:

在这里,我正在使用 api 来获取数据,但是我正在获取数据,因为我已经打印了数据。但是当我使用 FutureBuilder connection.state 时,它​​不返回任何内容并返回视图。我想知道 connection.state 的状态到 Done 以便我可以查看我的视图。

class DashboardScreen extends StatefulWidget {
  @override
  _DashboardScreen createState() => _DashboardScreen();

}


class _DashboardScreen extends State<DashboardScreen> {
  Future<DashboardModel> futureDashboard;

  //   api hit

  @override
  void didChangeDependencies() {
    super.didChangeDependencies();
    Future.delayed(Duration.zero, () {
      WidgetsBinding.instance.addPostFrameCallback((_) async {
        futureDashboard = dashboardData();
      }
      );
    });
  }


  // setting the data in the view created

  @override
  Widget build(BuildContext context) {
    // scaffold view
    return new Scaffold(

      body: Container(
        height: double.infinity,
        width: double.infinity,


        padding: EdgeInsets.symmetric(vertical: 10),
        child: FutureBuilder<DashboardModel>(
            future: futureDashboard,
            builder: (context, AsyncSnapshot<DashboardModel> futureDashboard) {
              switch (futureDashboard.connectionState) {
                case ConnectionState.none:
                  return Container(
                      child: Center(
                          child: Text(
                              'No Connection Message')
                      )
                  );
                case ConnectionState.active:
                  return Text('Active result...');
                case ConnectionState.waiting:
                  return Text('Awaiting result...');
                case ConnectionState.done:
                  print(futureDashboard);

                  if (futureDashboard.hasData) {
                    ListTile(
                      title: Text("data"),);
                  } else if (futureDashboard.hasError) {
                    return showSimpleFlushbar(
                        context, "${futureDashboard.error}");
                  }
                  return Container(
                    child: Text('error'),
                  );
              }
              return Container(
                child: Text('errornot'),
              );
            }),
      ),
    );
  }

【问题讨论】:

标签: android ios flutter flutter-layout flutter-dependencies


【解决方案1】:

首先你必须检查你的类的状态是无状态的还是有状态的,从我看到的代码来看,它并不清楚,而且在修改数据时你必须使用 setstate 函数并修改其中的数据,例如:- setState( () { myState = newValue; }); 希望它有所帮助;)--

【讨论】:

    猜你喜欢
    • 2020-12-12
    • 2021-12-25
    • 2020-09-28
    • 1970-01-01
    • 1970-01-01
    • 2020-05-24
    • 2021-07-14
    • 2021-01-16
    • 2021-07-16
    相关资源
    最近更新 更多