API 在 Flutter 的屏幕上返回 null
Posted
技术标签:
【中文标题】API 在 Flutter 的屏幕上返回 null【英文标题】:API Returning null on the Screen in Flutter 【发布时间】:2021-08-24 15:21:23 【问题描述】:我在我的应用程序中使用了Numbers Api,但是当按下按钮时,它在屏幕上显示为空。我的 API 也只包含字符串。
这是我的 API 代码:
String fact;
Future fetchData() async
Response response;
response = await get(Uri.https('numbersapi.com', 'random/trivia'));
if (response.statusCode == 200)
print(response.statusCode);
setState(()
fact = response.body;
);
@override
void initState()
fetchData();
super.initState();
@override
Widget build(BuildContext context)
.....
由于 Text 小部件不接受空值,我将其转换为 toString()
-
fact.toString(),
style: TextStyle(
fontSize: 20.0,
color: Colors.white,
),
),
但是当fetchData()
传入提升按钮的onPressed属性时,在屏幕上显示为null。
如何在屏幕上显示事实而不是 null?
任何帮助将不胜感激:)
【问题讨论】:
可以把按钮代码也放上来吗? @Pushpendra 是的,它只是 -child: ElevatedButton( onPressed: () fetchData(); ,
当我 print(fetchData());
它给了 -Instance of 'Future<dynamic>'
你需要await
@Pushpendra 我已经这样做了....
【参考方案1】:
最初,在获取数据之前,事实将是 null。因此,您可以显示一些指示正在获取数据的指标,如下所示
fact == null ? Show Loading Message : Text(fact);
或者显示一个空字符串,如下所示。
Text(fact ?? "")
按钮
FlatButton(child: Text("Load"), onPressed: () async => await fetchData())
编辑:
得到了确切的问题。您尝试从中获取数据的 URL 不是安全 URL。是http
不是https
因此在获取数据时尝试跟随。
await get(Uri.http('numbersapi.com', 'random/trivia'))
Bad state: Insecure HTTP is not allowed by platform: 检查此 HTTP 连接是否不安全。
【讨论】:
如果 fact 为 null,则表示 API 无法正常工作.. @NightyKnight 我已经更新了评论。现在检查它应该可以正常工作。 给出错误 -[ERROR:flutter/lib/ui/ui_dart_state.cc(186)] Unhandled Exception: Bad state: Insecure HTTP is not allowed by platform: http://numbersapi.com/random/trivia
***.com/questions/64197752/…
酷。请更新任何有帮助的评论/答案。以上是关于API 在 Flutter 的屏幕上返回 null的主要内容,如果未能解决你的问题,请参考以下文章
flutter_graphql 不起作用,并且在应用程序构建后总是返回 null
Flutter NoSuchMethodError:在 null 上调用了方法“[]”。使用flutter获取api时如何解决此错误
从 Laravel API 服务器接收的数据未显示在 Flutter 屏幕上