![](/img/trans.png)
[英]Flutter Dart http Type Response is not a subtype of type String error
[英]I am getting a flutter type error 'Response' is not a subtype of 'FutureOr<String>'
我想在 flutter 中解析 json object 但我无法让它显示在屏幕上。 我收到一条错误消息,提示“响应”类型不是“FutureOr”的子类型。 这是源代码
Future<String> loadList() async {
return await Network().getData('data');
}
class _IndexState extends State<Index> {
bool _loading = true;
Future loadList() async {
String jsonString = await loadList();
final response = json.decode(jsonString);
Prospects prospects = new Prospects.fromJson(response);
print(
'${prospects.success} - ${prospects.data[0].id} - ${prospects.data[0].firstname} - ${prospects.data[0].lastname} - ${prospects.data[0].amountSpeculated}');
return prospects;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(_loading ? 'Loading ' : 'JSON ListView in Flutter'),
),
body: Center(
child: FutureBuilder<String>(
future: loadList(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
),
));
}
}
loadList()
而不是_loadList()
:body: Center(
child: FutureBuilder<String>(
future: loadList(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
return CircularProgressIndicator();
},
),
)
Future
( Future<dynamic>
) 而不是Future<String>
:Future<String> loadList() async {
String jsonString = await _loadList();
final response = json.decode(jsonString);
Prospects prospects = new Prospects.fromJson(response);
return '${prospects.success} - ${prospects.data[0].id} - ${prospects.data[0].firstname} - ${prospects.data[0].lastname} - ${prospects.data[0].amountSpeculated}';
}
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
void main() {
runApp(
MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
home: HomePage(),
),
);
}
class HomePage extends HookWidget {
Future<String> loadList() async {
await Future.delayed(Duration(seconds: 2));
return ('My String');
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: FutureBuilder<String>(
future: loadList(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return Text(snapshot.data);
} else if (snapshot.hasError) {
return Text("${snapshot.error}");
}
// By default, show a loading spinner.
return CircularProgressIndicator();
},
),
),
);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.