当前位置: 首页 > 知识库问答 >
问题:

参数类型“Future”无法分配给参数类型“int”

史宸
2023-03-14

我对弗利特和我是新手;我一直在尝试开发一款带有PHP API后端的应用程序。在无数的答案和在线研究中,我无法找到解决我所面临问题的方法。我希望有人能告诉我我做错了什么。

我试图从API中获取数据,并将其显示在卡中。下面是我的代码:

...previous unnecessary code

      Padding(
          padding: EdgeInsets.symmetric(horizontal: 25.0, vertical: 30.0),
          child: Text('Summary Report',
              style: TextStyle(
                  color: Colors.black.withOpacity(0.7),
                  fontWeight: FontWeight.bold,
                  fontSize: 20.0))),
      Padding(
        padding: EdgeInsets.only(left: 15.0, bottom: 25.0, right: 15.0),
        child: Container(
          height: 150.0,
          child: ListView(
            scrollDirection: Axis.horizontal,
            children: <Widget>[
              UpcomingCard(
                  title: 'Total Service Calls',
                  value: _getTotalCalls(), //this is where I want to display my data
                  color: Colors.blue),
              UpcomingCard(
                  title: 'Pending Service Calls',
                  value: 0,
                  color: Colors.red),
            ],
          ),
        ),
... other unnecessary code

//function to get data
Future<int> _getTotalCalls() async {
  SharedPreferences localStorage = await SharedPreferences.getInstance();
  var user_id = localStorage.getString('user_id');
  var data = {'user_id': user_id};
  var res = await CallApi().postData(data, 'service/total');
  var body = json.decode(res.body);
  if (body['success']) {
    return body['servicecall_total'];
  } else {
    return 0;
  }
}

希望能得到一些帮助。非常感谢。

共有1个答案

郎鸿雪
2023-03-14

如果要显示未来函数的结果,需要使用FutureBuilder

FutureBuilder<int>(
  future: _getTotalCalls(),
  initalData: 0,
  builder: (context, snapshot) {
    return UpcomingCard(
              title: 'Total Service Calls',
              value: snapshot.data.toString(), 
              color: Colors.blue)
  }
)
 类似资料: