Flutter 从静态方法获取颤振状态值

Flutter 从静态方法获取颤振状态值,flutter,Flutter,如何从颤振的静态方法中获得状态值,我有一个状态叫做phone,需要在一些静态方法中使用这些状态值 String phone = ''; @override void initState() { super.initState(); getPhoneString(); } void getPhoneString() async { // basiclly just get the value from sharef pref setState(() {

如何从颤振的静态方法中获得状态值,我有一个状态叫做phone,需要在一些静态方法中使用这些状态值

String phone = '';

@override
void initState() {
    super.initState();
    getPhoneString();
} 

void getPhoneString() async
{
    // basiclly just get the value from sharef pref
    setState(() {
        phone = 'myhpone-string';
    });
}

static Future<Void> Process() async {
   // get phone state value

}
String phone='';
@凌驾
void initState(){
super.initState();
getPhoneString();
} 
void getPhoneString()异步
{
//基本上只需从sharef pref获取值
设置状态(){
phone='myhpone string';
});
}
静态未来进程()异步{
//获取电话状态值
}

如果要在静态方法中使用局部类变量,有两个选项

  • 使变量保持静态
  • 将变量作为参数发送到方法
  • 不建议使用第一个选项。 对于第二个选项,您可以如下更改静态方法:

    static Future<Void> Process(String param) async {
       // use phone parameter
    
    }
    
    静态未来进程(字符串参数)异步{
    //使用电话参数
    }
    
    据我所知,解决方案是调用
    initState()
    页面“类状态”将存储到另一个静态值中,您的代码将是:

    String phone='';
    静态电话状态;
    @凌驾
    void initState(){
    super.initState();
    getPhoneString();
    ***myPhoneState=this***
    } 
    void getPhoneString()异步
    {
    //基本上只需从sharef pref获取值
    设置状态(){
    phone='myhpone string';
    });
    }
    静态未来进程()异步{
    //获取电话状态值
    }
    

    这样,您可以随时调用页面状态及其方法,也可以随时调用“按钮、对话框…”。

    选项2无法执行,因为另一个原因是,对于选项i,尝试设置静态变量,但在静态方法中,值仍然为空