Flutter 如何从共享优先级将初始值设置为texfeild
我有一个textfield我想设置用户email from SharedReferences的初始值,但问题是我的SharedReferences函数是future类型的,所以在initState函数中,初始值被赋值为null,因为大家都知道future函数需要时间。我怎么做Flutter 如何从共享优先级将初始值设置为texfeild,flutter,dart,Flutter,Dart,我有一个textfield我想设置用户email from SharedReferences的初始值,但问题是我的SharedReferences函数是future类型的,所以在initState函数中,初始值被赋值为null,因为大家都知道future函数需要时间。我怎么做 class Checkout extends StatefulWidget { @override _CheckoutState createState() => _CheckoutState(); } c
class Checkout extends StatefulWidget {
@override
_CheckoutState createState() => _CheckoutState();
}
class _CheckoutState extends State<Checkout> {
String emailCheck = "";
profileData() async {
SharedPreferences preferences = await SharedPreferences.getInstance();
setState(() {
emailCheck = preferences.getString("email");
});
return emailCheck;
}
TextEditingController email;
@override
void initState() {
super.initState();
profileData();
email = TextEditingController(text: "$emailCheck");
}
您应该创建一个文本编辑控制器,然后在profileData函数中传递文本 例如: var emailController=TextEditingController; profileData异步{ SharedReferences首选项=等待SharedReferences.getInstance; String emailCheck=preferences.getStringemail; 设定状态{ ifemailCheck.isNotEmpty{ currencyController.text=emailCheck; } }; } @凌驾 无效初始状态{ super.initState; 剖面数据; }
将初始值设置为实例空字符串的默认值,然后异步调用访问共享首选项的方法,完成后,使用setState将该值设置为新检索到的值。学习Flitter如何工作是一个很好的练习。如果你有Future data use@pskink,我对Flitter是新手,你能给我一个代码片段吗?我不知道如何将Future builder分配给textfeild,这里的事情是,我正在将数据初始化到textfeild,这是我在builder之外做的,所以…你是一个救生员,非常感谢你。
subtitle: TextField(
style: TextStyle(
fontSize: 15.0,
color: Colors.black,
),
hintText: "1278 Loving Acres Road Kansas City, MO 64110",
hintStyle: TextStyle(
fontSize: 15.0,
color: Colors.grey,
),
),
keyboardType: TextInputType.number,
maxLines: 1,
controller: email,
),