正文可能会导致返回'null',但返回类型 Widget 可能是不可为空的类型



主体可能正常完成,导致返回"null",但返回类型"Widget"可能是不可为null的类型。尝试在末尾添加return或throw语句。

我目前正在使用:

environment:
sdk: ">=2.17.6 <3.0.0"

在我的pubspec.yaml

我的参考代码:

import 'package:algorithm_learn/sqldb.dart';
import 'package:flutter/material.dart';
class Home extends StatefulWidget {
const Home({super.key});
@override
State<Home> createState() => _HomeState();
}
class _HomeState extends State<Home> {
SqlDb sqlDb = SqlDb();
Future<List<Map>> readData() async {
List<Map> response = await sqlDb.readData("SELECT * FROM 'Coing'");
return response;
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('HomePage'),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
Navigator.of(context).pushNamed("addperson");
},
child: const Icon(Icons.add),
),
body: Container(
child: ListView(
children: [
// MaterialButton(
//   onPressed: () async {
//     await sqlDb.mydeleteDatabase();
//   },
//   child: const Text("Delete Database"),
// ),
FutureBuilder(
future: readData(),
builder:
(BuildContext context, AsyncSnapshot<List<Map>>   snapshot) {     (ERROR IS HERE)
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.length,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (context, i) {
return Card(
child: ListTile(
title: Text("${snapshot.data![i]['first_name']}"),
subtitle: Text("${snapshot.data![i]['last_name']}"),
trailing: Text("${snapshot.data![i]['color']}"),
),
);
},
);
}
})
],
),
),
);
}
}

我尝试添加"!"这确保了不会有"null"值,但这不起作用,只会让情况变得更糟。

我还尝试将环境更改为:

environment:
sdk: ">=2.17.6 <3.0.0"

但这也让事情变得更糟。

未来生成器的生成器将需要返回一个小部件。您添加了一个带有返回的if条件。但是如果它没有进入这个条件,那么就没有返回的小部件

尝试添加一个else条件并返回一个小部件。也许是一个循环进度指示器或Sizedbox.shrink((

FutureBuilder(
future: readData(),
builder:
(BuildContext context, AsyncSnapshot<List<Map>> ((ERROR IS HERE))  snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.length,
physics: NeverScrollableScrollPhysics(),
shrinkWrap: true,
itemBuilder: (context, i) {
return Card(
child: ListTile(
title: Text("${snapshot.data![i]['first_name']}"),
subtitle: Text("${snapshot.data![i]['last_name']}"),
trailing: Text("${snapshot.data![i]['color']}"),
),
);
},
);
}
else{
return SizedBox.shrink();//<---here
}
})

添加一个else子句并以Text("未找到数据"(或形式返回一些小部件

相关内容

最新更新