Flutter 显示API数据时不存在或存在未来的生成器问题,颤振

Flutter 显示API数据时不存在或存在未来的生成器问题,颤振,flutter,mobile,flutter-provider,flutter-futurebuilder,Flutter,Mobile,Flutter Provider,Flutter Futurebuilder,我在没有FutureBuilder的情况下调用API,当我在InState()中调用API时,由于Future.delayed()方法,它会在3秒钟后返回数据,因此ListView.builder会在检索API数据之前呈现,因此我会在逻辑上刷新小部件,并显示数据。因此,我多次添加了FutureBuilder,无论我总是得到错误type'List'不是类型'FutureOr的子类型,即使我将API调用设置为Future或API实例调用和提供程序列表集的方法,我仍然会得到相同的错误输出。以下是方法中

我在没有FutureBuilder的情况下调用API,当我在
InState()
中调用API时,由于
Future.delayed()
方法,它会在3秒钟后返回数据,因此
ListView.builder
会在检索API数据之前呈现,因此我会在逻辑上刷新小部件,并显示数据。因此,我多次添加了
FutureBuilder
,无论我总是得到错误
type'List'不是类型'FutureOr
的子类型,即使我将API调用设置为Future或API实例调用和提供程序列表集的方法,我仍然会得到相同的错误输出。以下是方法中的代码和注释:

API调用:

// Even if I put 'Future<RideData> getRides() ..' I get the same error
getRides() async {
    final response = await APIRequest(Method.GET, '/rides');
    final data = jsonDecode(response.body)['data'];
    return data;
  }
//即使我输入“Future getRides()…”我也会得到同样的错误
getRides()异步{
最终响应=等待APIREST(Method.GET,“/rides”);
最终数据=jsonDecode(response.body)['data'];
返回数据;
}
要在其中显示数据的小部件:

/// tried with Future<RideData>, same issue
  Future<List<RideData>> _getRideStreamList() async {
    await Future.delayed(Duration(seconds: 3)); //I tried without this, same issue
    var _vehicleStreamData = await APICalls.instance.getRides();
    var provider = Provider.of<RideStore>(context, listen: false);
    provider.setVehicleList(_vehicleStreamData, notify: false);
    return _vehicleStreamData;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: SafeArea(
        child: SingleChildScrollView(
          scrollDirection: Axis.vertical,
          child: Column(
            children: [
              Container(
                height: 1000,
                child: FutureBuilder<List<RideData>>(
                  future: _getRideStreamList(),
                  builder: (context, snapshot) {
                    if (snapshot.hasData) {
                      Consumer<RideStore>(
                        builder: (context, rideData, child) {
                          return ListView.builder(
                            shrinkWrap: true,
                            itemCount: rideData.rideList.length,
                            itemBuilder: (context, index) {
                              RideData rides = rideData.getRideByIndex(index);
                              return Text('${rides.rideId}');                            },
                          );
                        },
                      );
                    } else if (snapshot.hasError) {
                      return Text("${snapshot.error}");
                    }
                    return Container();
                  },
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
///用Future试过了,同样的问题
Future\u getRideStreamList()异步{
等待未来。延迟(持续时间(秒:3));//我试着没有这个,同样的问题
var_vehicleStreamData=等待APICalls.instance.getRides();
var provider=provider.of(上下文,侦听:false);
provider.setVehicleList(_vehicleStreamData,notify:false);
返回车辆流数据;
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
背景颜色:Colors.white,
正文:安全区(
子:SingleChildScrollView(
滚动方向:轴垂直,
子:列(
儿童:[
容器(
身高:1000,
孩子:未来建设者(
future:_getRideStreamList(),
生成器:(上下文,快照){
if(snapshot.hasData){
消费者(
生成器:(上下文、rideData、child){
返回ListView.builder(
收缩膜:对,
itemCount:rideData.rideList.length,
itemBuilder:(上下文,索引){
RideData rides=RideData.getRideByIndex(索引);
返回文本(“${rides.rideId}”);},
);
},
);
}else if(snapshot.hasrerror){
返回文本(“${snapshot.error}”);
}
返回容器();
},
),
),
],
),
),
),
);
}
提供商存储:

class RideStore extends ChangeNotifier {
  List<RideData> _rideList = [];

  List<RideData> get rideList => _rideList;

  setVehicleList(List<RideData> list, {bool notify = true}) {
    _rideList = list;
    if (notify) notifyListeners();
  }

  RideData getRideByIndex(int index) => _rideList[index];
}
类存储扩展变更通知程序{
列表_rideList=[];
List get rideList=>\u rideList;
setVehicleList(列表列表,{bool notify=true}){
_rideList=列表;
if(notify)notifyListeners();
}
RideData getRideByIndex(int index)=>\u rideList[index];
}
我不知道我做错了什么?!感谢任何形式的帮助,提前谢谢