dart 不使用Futurebuilder获取未来价值

jaql4c8m  于 2023-05-26  发布在  其他
关注(0)|答案(1)|浏览(112)

我想获取一个future函数的值(没有futurebuilder),在其中我加载了一个json文件,我把这个值放在一个文本小部件中,但它返回给我这个消息**“'Future void'的示例”**我不知道为什么。

helperLoadJson.dart

//Load Json
Future<String> _loadAStudentAsset() async {
  return await rootBundle.loadString('assets/Copie.json');
}
//Load Response
Future loadStudent([int index]) async {
  String jsonString = await _loadAStudentAsset();
  final jsonResponse = json.decode(jsonString);
  QuotList quotList = QuotList.fromJson(jsonResponse);

 return quotList.quots[0].country;

}

main.dart

class _MyHomePageState extends State<MyHomePage> {
 
//Get Future from helperLoadJson.dart
 Future<void> getLoadStudent() async {
    final String myQuot = await loadStudent();
    print(myQuot); // OK , return me good value
  }

  @override
  Widget build(BuildContext context) {
    print('getLoadStudent : ${getLoadStudent()}'); // return " Instance of 'Future<void>' "
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
           Text(
             '${getLoadStudent()}', // return " Instance of 'Future<void>' "
            ),
            Container(
                // child: projectWidget(),
                )
          ],
        ),
      ),
    );
  }
}
mf98qq94

mf98qq941#

getLoadStudent()
        .whenComplete(() {})
        .then((value) {})
        .onError((error, stackTrace) {});

whenComplete在这个future完成时被调用,无论它是带值还是带错误。
then在这个future完成时被调用
onError在此future完成时被调用。(仅捕获E类型的错误)

相关问题