[英]Null check operator used on a null value - Flutter
我试图制作一个列出驱动器文件的谷歌驱动器应用程序。 但我得到了 Null 检查运算符用于 null 值错误。 我知道发生了什么。 但我无法解决。
Future<void> _listGoogleDriveFiles() async {
final googleSignIn = signin.GoogleSignIn.standard(
scopes: ['https://www.googleapis.com/auth/drive.appdata'],
);
final GoogleSignInAccount? account = await googleSignIn.signIn();
final authHeaders = await account?.authHeaders;
final authenticateClient = GoogleAuthClient(authHeaders!);
final driveApi = drive.DriveApi(authenticateClient);
print('above files list');
list = await driveApi.files.list();
setState(() {});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
TextButton(
onPressed: () {},
child: Text('UPLOAD'),
),
if (list != null)
SizedBox(
height: 300,
width: double.infinity,
child: ListView.builder(
shrinkWrap: true,
itemCount: list!.files?.length,
itemBuilder: (context, index) {
final title = list!.files![index].originalFilename;
return ListTile(
leading: Text(title!),
trailing: ElevatedButton(
child: Text('Download'),
onPressed: () {
downloadGoogleDriveFile(
filename: list!.files![index].originalFilename,
id: list!.files![index].id);
},
),
);
},
),
)
],
),
),
floatingActionButton: Row(
children: [
FloatingActionButton(
onPressed: _listGoogleDriveFiles,
child: Icon(Icons.photo),
),
FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
],
),
);
}
}
当我运行它时,会显示上传文本,并且错误显示在文本下方。 所以错误一定是由于列表是 null。 但我只想显示列表,仅当它不是 null 时。
该怎么办?
该错误意味着您在运行时使用了null
检查运算符(感叹号)而不是null
。 因此,查看您的代码,不仅可能是null
的列表,还有您标记的其他对象!
.
问题出在某个地方,除非我错过了一些!
在您的代码中:
itemCount: list!.files?.length,
itemBuilder: (context, index) {
final title = list!.files![index].originalFilename;
return ListTile(
leading: Text(title!),
trailing: ElevatedButton(
child: Text('Download'),
onPressed: () {
downloadGoogleDriveFile(
filename: list!.files![index].originalFilename,
id: list!.files![index].id);
},
),
);
},
为了避免使用!
,您可以明确检查 object 是否为null
,例如:
if (list == null) {
[...some error handling or a message with a warning]
} else {
[your original code where you can use ! without fear of errors]
}
或者您可以仅在 null 的情况下为 object 分配一个值,如下所示:
title??= ['Default title for when some loading failed or something'];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.