gpt4 book ai didi

api - Flutter:如何在加载页面之前从 Api 获取数据

转载 作者:行者123 更新时间:2023-12-04 16:39:06 25 4
gpt4 key购买 nike

关闭。这个问题需要details or clarity .它目前不接受答案。












想改善这个问题吗?通过 editing this post 添加详细信息并澄清问题.

去年关闭。




Improve this question




我试图从 Api 获取数据以显示在屏幕上,所以我创建了一个函数并从小部件构建函数调用它,或者我也尝试从构造函数调用它,但它最终会调用该函数,因此出现列表空错误。
我想在屏幕加载之前调用 api 并将数据存储在列表中。

最佳答案

您可以通过以下代码来完成:
首先,您必须使用 onPressed 击中 Api或 onTap按钮内的方法,如

onPressed: () {
getNutritionDetails(context,"2");
getDataFromMyApi(context);
},
再做一个函数,让代码更干净,可以任意命名,这里我把函数命名为 getDataFromMyApi
void getDataFromMyApi(BuildContext context) {
//Getting data from API and store it in String or Model or List whatever you required.
String myData;

//and then pass the data to your second activity
Navigator.push(
context,
MaterialPageRoute(
builder: (context) =>
MyStatefulWidget(myData), // Your Api response myData is Passing to Stateful Widget
),
);
}
然后我制作了一个有状态的小部件,您想在其中传递数据并希望它在打开之前加载数据,这样您就可以在 myData 页面加载之前获得数据。变种
class MyStatefulWidget extends StatefulWidget {
String myData;

MyStatefulWidget(this.myData, {Key key}) : super(key: key);

@override
_MyStatefulWidgetState createState() => _MyStatefulWidgetState();
}

class _MyStatefulWidgetState extends State<MyStatefulWidget> {
@override
Widget build(BuildContext context) {
return Container(
height: double.infinity,
width: double.infinity,
child: Text(widget.myData),
);
}
}
或者
您可以使用 Future Builder
查询:什么 Future Builder做?
答案:它调用 future 函数来等待结果,一旦它产生结果,它就会调用我们构建小部件的构建器函数。
class _ExampleState extends State<Example> {

@override
Widget build(BuildContext context) {
return FutureBuilder<String>(
future: downloadData(), // function where you call your api
builder: (BuildContext context, AsyncSnapshot<String> snapshot) { // AsyncSnapshot<Your object type>
if( snapshot.connectionState == ConnectionState.waiting){
return Center(child: Text('Please wait its loading...'));
}else{
if (snapshot.hasError)
return Center(child: Text('Error: ${snapshot.error}'));
else
return Center(child: new Text('${snapshot.data}')); // snapshot.data :- get your object which is pass from your downloadData() function
}
},
);
}
Future<String> downloadData()async{
// var response = await http.get('https://getProjectList');
return Future.value("Data download successfully"); // return your response
}
}

关于api - Flutter:如何在加载页面之前从 Api 获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64279234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com