【问题标题】:get content of a text file on internet, flutter在互联网上获取文本文件的内容,颤动
【发布时间】:2020-10-10 18:21:47
【问题描述】:

当我阅读互联网上某个 url 上存在的文本文件的内容时,它就在函数内部工作。

这是我的功能

String x="";
Future<String> ip(String url)
  async {
    HttpClient client = new HttpClient();
    var request = await client.postUrl(Uri.parse(url));
    request.close().then((response) {
      utf8.decoder.bind(response.cast<List<int>>()).listen((content) {
        print(content);// output https://st03.sslstream.dlf.de/dlf/03/128/mp3/stream.mp3
setState(() {
  x = content; // value null
});
      });
    });
  }

所以当我打印这个文件的内容时

http://opml.radiotime.com/Tune.ashx?id=s120806

结果是

https://st03.sslstream.dlf.de/dlf/03/128/mp3/stream.mp3

但正如您在我的函数中看到的那样,我将内容的值赋予了 x 字段

setState(() {
  x = content; // value null
});

所以当我在 initsstate 中调用函数然后打印 x 时,该值将为空!。

  @override
  void initState() {
    ip("http://opml.radiotime.com/Tune.ashx?id=s120806"); //output  https://st03.sslstream.dlf.de/dlf/03/128/mp3/stream.mp3
    print(x); // output null
    super.initState();
    audioStart();
  }

所以我需要为其他字段或属性提供响应的内容,或者我想让我的函数返回一个字符串而不是未来,这个字符串实际上是作为字符串的响应的内容,它不是空。

提前致谢

【问题讨论】:

  • 您想对自定义StatefulWidget 中的x 做什么?在build() 方法构建的一些Widget 中使用它?
  • 然后使用FutureBuilder
  • x 为空,因为当 print 语句打印 x 时,Future ip 甚至不会被执行,如果 x 不为空,你必须等待 ip 完成,熊请记住 init 不支持异步
  • 获取字符串只需使用:var response = await request.close(); return response.single.then(utf8.decode);
  • 使用http包时甚至更好:Future&lt;String&gt; _initFuture() async { var resp = await http.get('http:/...'); return resp.body; }

标签: string flutter dart httpclient response


【解决方案1】:

试试这个,

  @override
  void initState() {
   initAsyncState();
  }
 
  void initAsyncState() async {
    await ip("http://opml.radiotime.com/Tune.ashx?id=s120806"); //output  https://st03.sslstream.dlf.de/dlf/03/128/mp3/stream.mp3
    print(x); // output will not be null
  }

如果您想在小部件中使用响应,请使用 FutureBuilder

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-16
    相关资源
    最近更新 更多