Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Dart 颤振显示ListView.builder中的未来值_Dart_Flutter - Fatal编程技术网

Dart 颤振显示ListView.builder中的未来值

Dart 颤振显示ListView.builder中的未来值,dart,flutter,Dart,Flutter,如何在listview.builder(循环)中的文本小部件中显示未来值?。我正在计算每个属性的距离,并希望显示在文本小部件中 Text('${ _calculateDistance(model, store)' } 返回一个“未来的实例” Future\u CalculateInstance(主模型、存储)异步{ double distanceInMeters=等待地理定位器()( model.position.latitude, model.position.longitude, sto

如何在listview.builder(循环)中的文本小部件中显示未来值?。我正在计算每个属性的距离,并希望显示在文本小部件中

Text('${ _calculateDistance(model, store)' } 
返回一个“未来的实例”

Future\u CalculateInstance(主模型、存储)异步{
double distanceInMeters=等待地理定位器()(
model.position.latitude,
model.position.longitude,
store.position.latitude,
存储、位置、经度);
返回距离(米/1000;}

对于单个帖子,我知道我可以使用setstate,但我正在计算每个帖子的距离。

您可以将您的项目包装在
FutureBuilder

@override
  Widget build(BuildContext context) {
    return FutureBuilder<double>(
      future: _calculateDistance( model,  store),
      initialData: 0.0,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return Text("${snapshot.data}");
        } else {
          return Center(
            child: CircularProgressIndicator(),
          );
        }
      },
    );
  }
@覆盖
小部件构建(构建上下文){
回归未来建设者(
未来:_计算立场(模型、商店),
初始数据:0.0,
生成器:(上下文,快照){
if(snapshot.hasData){
返回文本(“${snapshot.data}”);
}否则{
返回中心(
子对象:CircularProgressIndicator(),
);
}
},
);
}

谢谢。还有一个问题:在StreamBuilder中使用FutureBuilder可以吗?虽然我已经测试过了,而且它工作得很好。我只是想知道这是一个好的方法还是不好的方法,我正在使用StreamBuilder从firebase获取数据(位置),然后我必须使用FutureBuilder计算每个位置和显示的距离。好吧,你可以使用StreamBuilder的主方法获得距离,但这取决于你想要什么。在每个项目中使用futurebuilder可以获得一次或多次响应。对不起,这个误会你解决了吗?你能告诉我你是怎么做到的吗
@override
  Widget build(BuildContext context) {
    return FutureBuilder<double>(
      future: _calculateDistance( model,  store),
      initialData: 0.0,
      builder: (context, snapshot) {
        if (snapshot.hasData) {
          return Text("${snapshot.data}");
        } else {
          return Center(
            child: CircularProgressIndicator(),
          );
        }
      },
    );
  }