flutter - 如何修复类型'Null'不是布尔表达式中的'bool'
问题描述
我尝试了这段代码,但是三元运算符没有正常工作,因为我收到错误并且如果 put String bgImage = (data['isDayTime']==null)? 'day.png' : 'night.png'; 然后我只得到 day.png 我得到这个错误
以下 TypeErrorImpl 被抛出构建 Home(dirty, dependencies: [_ModalScopeStatus], state: _HomeState#1a387): type 'Null' is not a 'bool' in boolean expression
这是代码
import 'package:flutter/material.dart';
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
Map data = {};
@override
Widget build(BuildContext context) {
data=data.isNotEmpty ? data : ModalRoute.of(context)?.settings?.arguments as Map;
print(data);
String bgImage = data['isDayTime']? 'day.png' : 'night.png';
return Scaffold(
body: SafeArea(
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage('assets/$bgImage'),
fit: BoxFit.cover,
)
),
child: Padding(
padding: const EdgeInsets.fromLTRB(0,120.0,0,0),
child: Column(
children: <Widget>[
FlatButton.icon(
onPressed: () async {
dynamic result = await Navigator.pushNamed(context, '/location');
setState(() {
data ={
'time': result['time'],
'location': result['location'],
'isDaytime': result['isDaytime'],
'flag': result['flag'],
};
});
},
icon: Icon(
Icons.edit_location,
color: Colors.grey[300],
),
label: Text(
'Edit Location',
style: TextStyle(
color: Colors.grey[300],
),
),
),
SizedBox(height: 20.0),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text(
data['location'],
style: TextStyle(
fontSize: 28.0,
letterSpacing: 2.0
)
)
],
),
SizedBox(height: 20.0),
Text(
data['time'],
style: TextStyle(
fontSize: 66.0,
),
),
],
),
),
),
),
);
}
}
解决方案
主要问题是你在这里传递bool? isDaytime
,这是可以为空的,意味着它可以为空。但是String bgImage = data['isDayTime']? 'day.png' : 'night.png';
在这里使用手段data['isDayTime']
要么是对的,要么是错的。这就是为什么你需要确保你没有得到空值。此外,模态路由参数可能会出现另一个空值。
首先检查是否data['isDayTime']
为空,然后检查它。您可以关注@Monik 的回答。
推荐阅读
- python - Django Form无法识别模型属性
- regex - 模式匹配 Scala 正则表达式评估
- sql-server - 用于 odbc 的 SQL Server 链接服务器...它是如何工作的?
- postgresql - Postgres Docker 映像未使用自定义名称创建数据库
- javascript - 从 Azure 时序见解 JavaScript API 查询数据时如何解决 500 内部服务错误?
- python-3.x - 尝试打开放入 S3 存储桶中的 Excel 文件
- swift - 实现一个集合视图 SwiftUI
- jquery - Kendo - 从 localStorage 读取时级联错误
- python - 如何使用 pytest 测试服务是否正常工作
- batch-file - 需要在 .cmd 文件中递归删除目录中所有文件的文件名和文件路径中的空格和双引号