首页 > 解决方案 > Flutter:如何将 TextField 文本传递给 API 请求?

问题描述

我正在学习 Flutter,所以我用新闻 API做了一个有趣的小新闻应用程序。它具有针对不同类别的不同选项卡,并根据与每个选项卡关联的关键字请求数据。但是,我想要一个标签,用户可以在其中根据特定关键字搜索新闻。我的问题是我的Resource(如下所示)是静态的,所以我无法将东西传递给它,而且我不确定是否/如何在Resource没有静态的情况下制作。我不会超载我的代码,我只是根据我的目标寻找一些指导。我最好的猜测是以Future某种方式使用,但我不确定在这种情况下会是什么样子。

如果需要更多代码,我很乐意提供。我不喜欢我的问题太混乱。有任何想法吗?谢谢!这是最重要的代码:

  static chooseURL(keyword) {
    if (keyword == 'General') {
      return Constants.HEADLINE_NEWS_URL.substring(0, 37) + "country=us" +
          Constants.HEADLINE_NEWS_URL.substring(
              39, Constants.HEADLINE_NEWS_URL.length);
    } else if(keyword == 'Search') {
      // No idea!
    } else {
      return Constants.HEADLINE_NEWS_URL.substring(0, 39) +
          keyword.toLowerCase() + Constants.HEADLINE_NEWS_URL.substring(
          39, Constants.HEADLINE_NEWS_URL.length);
    }
  }

  static Resource<List<NewsArticle>> all(key) {
    return Resource(
        url: chooseURL(key),
        parse: (response) {
          final result = json.decode(response.body);
          Iterable list = result['articles'];
          return list.map((model) => NewsArticle.fromJson(model)).toList();
        });
  }

和这个:

  void _populateNewsArticles() {
    WebService().load(NewsArticle.all(keyword)).then((newsArticles) => {
      setState(() {
        _newsArticles = newsArticles;
      })
    });
  }

标签: asynchronousflutterdartrequestfuture

解决方案


推荐阅读