【问题标题】:Why can't I retreive my data? (Flutter-Rest API)为什么我无法检索我的数据? (Flutter-Rest API)
【发布时间】:2019-12-30 12:17:03
【问题描述】:

我一直在尝试使用 REST API 从我的数据库中检索数据。我的代码没有错误,但我的模拟器中没有显示数据,并且一直显示循环进度指示器(这意味着没有数据)

这是因为我想从共享偏好中获得令牌吗?还是别的什么?

这是我的 getToken 代码:

    String token;

  Future<String> getToken() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    String token = prefs.getString("token");
    return token;
  }

这是我的 ShowPost 代码:

Future<List<Post>> showPosts() async {
    String token = await getToken();

    var data = await http.get(
      "https://api-wisapedia.herokuapp.com/posts?sortBy=createdAt:desc",
      headers: {HttpHeaders.authorizationHeader: 'Bearer $token'},
    );
    var dataDecoded = json.decode(data.body);

    List<Post> posts = List();
    dataDecoded.forEach((post) {
      post.add(post["destination"], post["owner"], post["image"]);
    });
    return posts;
  }

这是我的正文代码:

FutureBuilder(
            future: showPosts(),
            builder: (context, snapshot) {
              if (snapshot.hasData) {
                return ListView.builder(
                    itemCount: snapshot.data.length,
                    itemBuilder: (context, index) {
                      return Card(
                        color: Color(0xFFE1F5FE),
                        child: Column(
                          mainAxisSize: MainAxisSize.min,
                          children: <Widget>[
                            ListTile(
                              leading: Image(
                                  image: AssetImage('lib/images/pantai.jpg')),
                              title: Text(snapshot.data[index].title),
                              subtitle: Text(snapshot.data[index].destination),
                            ),
                            ButtonTheme.bar(
                              // make buttons use the appropriate styles for cards
                              child: ButtonBar(
                                children: <Widget>[
                                  FlatButton(
                                    child: const Text('DETAILS'),
                                    onPressed: () {
                                      Navigator.push(
                                        context,
                                        MaterialPageRoute(builder: (context) {
                                          return DetailPost();
                                        }),
                                      );
                                    },
                                  ),
                                  FlatButton(
                                    child: const Text('JOIN'),
                                    onPressed: () {
                                      /* ... */
                                    },
                                  ),
                                ],
                              ),
                            ),
                          ],
                        ),
                      );
                    });
              } else {
                return Align(
                  alignment: FractionalOffset.center,
                  child: CircularProgressIndicator(),
                );
              }
            })

我该如何解决这个问题?

【问题讨论】:

    标签: json rest flutter jwt


    【解决方案1】:

    去掉future builder的future参数中的() future : showPosts 不是 future :showPosts()

    编辑

    FutureBuilder替换为FutureBuilder&lt;List&lt;Post&gt;&gt;,将AsyncSnapshot替换为AsyncSnapshot&lt;List&lt;Post&gt;&gt;以指定传入数据的数据类型。

    【讨论】:

    • 我试过这个,但它使我的代码错误:错误:参数类型'Future> Function()'不能分配给参数类型'Future'。尝试更改参数的类型,或将参数转换为“Future”。未来:showPosts,^
    猜你喜欢
    • 2020-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2020-05-16
    相关资源
    最近更新 更多