我试图从Api获取数据以显示在屏幕上,所以我创建了一个函数并从小部件构建函数中调用它,或者我也尝试从构造函数中调用它,但最终它将调用该函数,因此列出空错误来。
我想在屏幕加载之前调用api并将数据存储在列表中。
答案 0 :(得分:2)
您可以通过以下代码进行操作:
首先,您必须在按钮之类的Book
或SELECT
A.Name,
B.ReleaseYear,
B.Pages,
B.Genre,
B.ReleaseYear,
A.Birthyear,
A.Country
FROM
Author A
LEFT JOIN Book B
ON A.Name = B.AuthorName
方法中击中Api
onPressed
然后创建一个函数,以使代码更清晰易读,并带有任何名称,这里我将函数命名为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
),
);
}
您可以使用Future Builder
是:myData
做什么?
答案::它将调用future函数以等待结果,并在生成结果后立即调用在其中构建窗口小部件的builder函数。
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),
);
}
}