Flutter 如何从共享优先级将初始值设置为texfeild

Flutter 如何从共享优先级将初始值设置为texfeild,flutter,dart,Flutter,Dart,我有一个textfield我想设置用户email from SharedReferences的初始值,但问题是我的SharedReferences函数是future类型的,所以在initState函数中,初始值被赋值为null,因为大家都知道future函数需要时间。我怎么做 class Checkout extends StatefulWidget { @override _CheckoutState createState() => _CheckoutState(); } c

我有一个textfield我想设置用户email from SharedReferences的初始值,但问题是我的SharedReferences函数是future类型的,所以在initState函数中,初始值被赋值为null,因为大家都知道future函数需要时间。我怎么做

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,
              ),