late TextEditingController _controller = TextEditingController();
late String someString = "someString";
TextEditingController _controller = TextEditingController();
String someString = "someString";
Run Code Online (Sandbox Code Playgroud)
他们还是不一样吗?或者完全一样???在任何情况下(在表演中)
kri*_*yaa 16
以下陈述
late TextEditingController _controller = TextEditingController();TextEditingController _controller = TextEditingController();两者都一样吗?
这就像说
var TextEditingController _controller = TextEditingController();
什么时候使用late?
在某些情况下,您最初并不知道变量的值。该值可能是null.
由于 dart 是null safe你必须使用?或late keyword
var someString; Flutter doesn't allow this
Run Code Online (Sandbox Code Playgroud)
要克服这个问题,您可以执行以下任一操作:
var someString?; Saying flutter the value is nullable. So that flutter would warn you when you access this variable
late someString; You are assuring flutter that you will initialize this in your code before its used.
Run Code Online (Sandbox Code Playgroud)
小智 2
使用 Late 关键字声明稍后将初始化的变量。
late data_type variable_name;
Run Code Online (Sandbox Code Playgroud)
当晚变量在初始化之前使用时,会发生此错误。您必须记住,虽然您使用了一些标记为“延迟”的变量或数据,但它们的值并未事先更改或保存。
late String name;
@override
Widget build(BuildContext context) {
return Scaffold(
body: Text(name)
//runtime error:
//LateInitializationError: Field 'name' has not been initialized.
);
}
Run Code Online (Sandbox Code Playgroud)
这表示此时变量名没有值;它将在未来被初始化。我们在 Text() 小部件中使用了这个变量,而没有首先初始化它。
解决此问题
late String name;
@override
void initState() {
name = "Flutter Campus";
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Text(name)
);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30617 次 |
| 最近记录: |