颤振:如何在加载页面之前从Api获取数据
我试图从Api获取数据以显示在屏幕上,所以我创建了一个函数并从widget build函数调用它,或者我也尝试从构造函数调用它,但它最终会调用该函数,所以出现list empty错误颤振:如何在加载页面之前从Api获取数据,api,flutter,dart,Api,Flutter,Dart,我试图从Api获取数据以显示在屏幕上,所以我创建了一个函数并从widget build函数调用它,或者我也尝试从构造函数调用它,但它最终会调用该函数,所以出现list empty错误 我想在屏幕加载之前调用api,并将数据存储在列表中。您可以通过以下代码执行此操作: 首先,您必须在一个按钮内使用onPressed或onTap方法点击Api,如 onPressed: () { getNutritionDetails(context,"2"); getDataFromMy
我想在屏幕加载之前调用api,并将数据存储在列表中。您可以通过以下代码执行此操作: 首先,您必须在一个按钮内使用
onPressed
或onTap
方法点击Api,如
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
var之前获取数据
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),
);
}
}
您可以通过以下代码执行此操作: 首先,您必须在一个按钮内使用
onPressed
或onTap
方法点击Api,如
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
var之前获取数据
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),
);
}
}
请提供您的代码到目前为止您尝试了什么。请提供您的代码到目前为止您尝试了什么。谢谢,很好的解释..工作很有魅力..真的很高兴能提供帮助@MohammadArman@Maz341如果要显示带有api数据获取的加载程序,可以使用相同的方法。当点击api时,将isLoading的值设置为true(isLoading=true),然后在收到响应后设置isLoading=false;谢谢,很好的解释。工作很有魅力。真的很乐意帮忙@MohammadArman@Maz341如果要显示带有api数据获取的加载程序,可以使用相同的方法。当点击api时,将isLoading的值设置为true(isLoading=true),然后在收到响应后设置isLoading=false;