Flutter 错误:错误:字段'_prenom&x27;应初始化,因为其类型为';字符串';不';不允许空值
我有一个问题,我正在创建一个带有字符串的应用程序,当我想要声明一个变量并在之后初始化它时,我遇到了一个错误“error:Field'\u prenom'应该初始化,因为它的类型'String'不允许null”。我测试了很多东西,但任何东西都可以Flutter 错误:错误:字段'_prenom&x27;应初始化,因为其类型为';字符串';不';不允许空值,flutter,dart,Flutter,Dart,我有一个问题,我正在创建一个带有字符串的应用程序,当我想要声明一个变量并在之后初始化它时,我遇到了一个错误“error:Field'\u prenom'应该初始化,因为它的类型'String'不允许null”。我测试了很多东西,但任何东西都可以 import 'package:flutter/material.dart'; class LoginController extends StatefulWidget { LoginControllerState createState() =>
import 'package:flutter/material.dart';
class LoginController extends StatefulWidget {
LoginControllerState createState() => new LoginControllerState();
}
class LoginControllerState extends State<LoginController> {
bool _log = true;
String _mail;
String _password;
String _prenom;
String _nom;
@override
Widget build(BuildContext context) {
// TODO: implement build
return new Scaffold(
appBar: new AppBar(title: new Text("Authentification"),),
body: new SingleChildScrollView(
child: new Column(
children: <Widget>[
new Container(
margin: EdgeInsets.all(20.0),
width: MediaQuery.of(context).size.width - 40,
height: MediaQuery.of(context).size.height / 2,
child: new Card(
elevation: 8.5,
child: new Column(
children: cardElements(),
),
),
)
],
),
),
);
}
List<Widget> cardElements(){
List<Widget> widgets = [];
widgets.add(
new TextField(
decoration: new InputDecoration(hintText: "Entrez votre adresse mail"),
onChanged: (string) {
setState(() {
_mail = string;
});
},
)
);
widgets.add(
new TextField(
decoration: new InputDecoration(hintText: "Entrez votre mot de passe"),
onChanged: (string) {
setState(() {
_password = string;
});
},
)
);
if(_log == false ) {
widgets.add(
new TextField(
decoration: new InputDecoration(hintText: "Entrez votre prenom"),
onChanged: (string) {
setState(() {
_prenom = string;
});
},
)
);
widgets.add(
new TextField(
decoration: new InputDecoration(hintText: "Entrez votre nom"),
onChanged: (string) {
setState(() {
_nom = string;
});
},
)
);
}
widgets.add(
new TextButton(
onPressed: () {
setState(() {
_log = !_log;
});
},
child: new Text(
(_log == true)
? "Pour créer un compte, appuyez ici"
: "Vous avez déjà un compte ? Appuyez ici"
)
)
);
return widgets;
}
}
导入“包装:颤振/材料.省道”;
类LoginController扩展StatefulWidget{
LoginControllerState createState()=>新建LoginControllerState();
}
类LoginControllerState扩展状态{
bool _log=true;
字符串-邮件;
字符串\u密码;
字符串前缀;
字符串名称;
@凌驾
小部件构建(构建上下文){
//TODO:实现构建
归还新脚手架(
appBar:new appBar(标题:新文本(“身份验证”),),
正文:新的SingleChildScrollView(
子:新列(
儿童:[
新容器(
裕度:所有边缘集(20.0),
宽度:MediaQuery.of(context).size.width-40,
高度:MediaQuery.of(context).size.height/2,
孩子:新卡(
标高:8.5,
子:新列(
子项:cardElements(),
),
),
)
],
),
),
);
}
列表元素(){
列表小部件=[];
widgets.add(
新文本字段(
装饰:新的输入装饰(hintText:“Entrez votre地址邮件”),
onChanged:(字符串){
设置状态(){
_邮件=字符串;
});
},
)
);
widgets.add(
新文本字段(
装饰:新的输入装饰(hintText:“Entrez votre mot de passe”),
onChanged:(字符串){
设置状态(){
_密码=字符串;
});
},
)
);
如果(_log==false){
widgets.add(
新文本字段(
装饰:新输入装饰(hintText:“Entrez votre prenom”),
onChanged:(字符串){
设置状态(){
_prenom=字符串;
});
},
)
);
widgets.add(
新文本字段(
装饰:新的输入装饰(hintText:“Entrez votre nom”),
onChanged:(字符串){
设置状态(){
_nom=字符串;
});
},
)
);
}
widgets.add(
新文本按钮(
已按下:(){
设置状态(){
_log=!\u log;
});
},
儿童:新文本(
(_log==true)
?“将混凝土浇筑到混凝土中,并在混凝土中浇筑”
:“你有什么事吗?”
)
)
);
返回窗口小部件;
}
}
谢谢你的回答…Dart是。必须始终指定一个值,或使用将其显式标记为可为空代码>
String _prenom = "Something";
或
谢谢,使用可以吗?
但我不知道为什么,但它会标记字段“\u prenom”的值没有使用。但这不是一个问题,我想你会的!
String? _prenom;