I am tying to parse a json object in flutter but i cant get it to show on the screen. I get an error saying type 'Response' is not a subtype of 'FutureOr'. This is the source code
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()
instead of _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>
) instead of 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();
},
),
),
);
}
}
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.