将从 Shared Preferences 获得的初始值设置为控制器 [关闭]

Posted

技术标签:

【中文标题】将从 Shared Preferences 获得的初始值设置为控制器 [关闭]【英文标题】:Setting initial value gotten from Shared Preferences to controller [closed] 【发布时间】:2021-02-13 08:29:22 【问题描述】:

我想为表单域设置一个初始值。我在this answer 中读到它可以这样做

TextEditingController _controller = TextEditingController(text: 'initial value');

但我想从共享首选项中获取初始值,即异步。

我该怎么做?

我尝试将控制器值设置为初始状态,但这不起作用

【问题讨论】:

【参考方案1】:

你有两种方法:

1 ) 在导航或构造小部件之前从首选项获取文本。这样就可以得到final变量了。

2 ) 在 initState 之后加载文本

class Foo extends StatefulWidget 
 @override
  _FooState createState() 
    return _FooState();
  


class _FooState extends State<Foo> 
  TextEditingController _controller;

  //For check text loaded. bool textLoaded;
  bool textLoaded;

  String text;

  @override
  void initState() 
    textLoaded = false;
    super.initState();
  

  Future<void> setText() async 
    setState(() 
      text = "GET TEXT FROM PREF";
      _controller = TextEditingController(text: text);
      textLoaded = true;
    );
  

  @override
  Widget build(BuildContext context) 
    return Column(
      children: <Widget>[
        textLoaded
            ? TextField(
                controller: _controller,
              )
            : const CircularProgressIndicator(),
        RaisedButton(
          onPressed: () 
            _controller.clear();
          ,
          child: const Text('CLEAR'),
        ),
      ],
    );
  

【讨论】:

以上是关于将从 Shared Preferences 获得的初始值设置为控制器 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

flutter中使用shared_preferences的存储

Flutter Web 的 Shared_Preferences?

flutter 本地存储数据(shared_preferences)

Flutter:删除所有已保存的shared_preferences首选项

flutter中本地存储shared_preferences的使用

Flutter shared_preferences本地存储