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

时间:2020-10-09 11:33:07

标签: api flutter dart

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

我想在屏幕加载之前调用api并将数据存储在列表中。

1 个答案:

答案 0 :(得分:2)

您可以通过以下代码进行操作:

首先,您必须在按钮之类的BookSELECT 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
      ),
    );
  }

OR

您可以使用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),
    );
  }
}