【发布时间】:2022-07-04 23:18:55
【问题描述】:
https://flutterigniter.com/checking-null-aware-operators-dart/
Null check operator used on a null value
这些链接说如果值可以为空,那么我们可以使用?? 运算符为其赋值。我试过了,还是一样的错误:
这是数据结构。
main.dart
import 'package:flutter/material.dart';
import 'dart:convert';
BigData bigDataFromJson(String str) => BigData.fromJson(json.decode(str));
class BigData {
BigData({
this.data,
});
Data? data;
factory BigData.fromJson(Map<String, dynamic> json) => BigData(
data: Data.fromJson(json["data"]),
);
Map<String, dynamic> toJson() => {
"data": data!.toJson(),
};
}
class Data {
Data({
this.lockoutDetails,
});
bool? lockoutDetails;
factory Data.fromJson(Map<String, dynamic> json) => Data(
lockoutDetails: json["lockout_details"],
);
Map<String, dynamic> toJson() => {
"lockout_details": lockoutDetails,
};
}
这里从Flutter的默认应用开始:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
State<MyHomePage> createState() => _MyHomePageState();
}
这里我使用了上述数据结构中的变量lockoutDetails,它显示了错误null check operator used on a null value。
class _MyHomePageState extends State<MyHomePage> {
BigData d = BigData();
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child:
d.data!.lockoutDetails ?? true
? const Text(
'AAA',
)
: Container(),
));
}
}
改正方法是什么?
【问题讨论】:
标签: flutter dart dart-null-safety