【发布时间】:2021-11-13 01:43:29
【问题描述】:
我是 Flutter 的新手,我正在研究 Future Builder,当我在以下行运行代码时:return snapshot.data; 正在返回以下错误:The return type 'Object?' isn't a 'Widget', as required by the closure's context.
我认为这与 Null 安全性有关,因为当我将行:return snapshot.data; 更改为 return Text(snapshot.data.toString()); 时,它会呈现文本:ListView(ScrollDirection: vertical...ScrollPhysics),但我可能对 Null 安全性有误。
下面的代码来自一个youtube教程:https://www.youtube.com/watch?v=y-IypschepA,我正在看,我在学习的时候一个字一个字地复制了代码,我已经验证了近20次我的代码正是导师编写并成功运行的代码。
我不确定如何解决此错误。
import 'package:flutter/material.dart';
class FutureBuilderTest extends StatefulWidget {
@override
_FutureBuilderTestState createState() => _FutureBuilderTestState();
}
class _FutureBuilderTestState extends State<FutureBuilderTest> {
Future<void> loadList(BuildContext context) async {
return Future.delayed(
Duration(seconds: 1),
() {
return ListView.builder(
itemCount: 40,
itemBuilder: (context, index) {
return Card(
elevation: 8,
child: Text(
"Dummy Text $index",
style: TextStyle(fontSize: 17, fontWeight: FontWeight.bold),
),
);
},
);
},
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Future Builder Test"),
),
body: FutureBuilder(
future: loadList(context),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return Center(
child: CircularProgressIndicator(),
);
}
if (snapshot.connectionState == ConnectionState.done) if (snapshot
.hasError) {
return Center(
child: Text(snapshot.data.toString()),
);
}
if (snapshot.data != null) {
return snapshot.data; // THIS LINE IS RETURNING THE ERROR
} else {
return Center(
child: CircularProgressIndicator(),
);
}
},
),
);
}
}
【问题讨论】: