gpt4 book ai didi

android - Flutter 拨动开关和共享首选项

转载 作者:行者123 更新时间:2023-12-05 00:13:44 24 4
gpt4 key购买 nike

我需要在我的应用程序中保存切换开关的状态并在启动时加载它。为此,我使用 SharedPreferences:

Future<bool> saveSwitchState(bool value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool("switchState", value);
return prefs.setBool("switchState", value);
}

Future<bool> getSwitchState() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
isSwitchedFT = prefs.getBool("switchState");
print(isSwitchedFT);

return isSwitchedFT;
}

每当我更改切换值时,saveSwitchState() 都会运行。

问题出在应用程序的启动处。我创建了一个 bool 值:bool isSwitchedFT = false;我用 false 初始化,因为 null 给我错误。我将如何设置 isSwitchedFT = getSwitchState;在 isSwitchedFT 的空值上它编译但我在我的模拟器上收到一个红色错误:

'package:flutter/src/material/toggleable.dart': Failed assertion: line 45 pos 15: 'tristate || value
!= null': is not true.

当使用一个值编译时,开关可以正常工作并保存更改的值。

Switch(
value: isSwitchedFT,
onChanged: (bool value) {
setState(() {
isSwitchedFT = value;
saveSwitchState(value);
print('Saved state is $isSwitchedFT');
//switch works
});
print(isSwitchedFT);
},
activeTrackColor: Color(0xFF1D1F33),
activeColor: Colors.purple[500],
),

我想要的是用开关的最后一个值加载应用程序。谢谢。

最佳答案

检查示例代码

class _MyAppState extends State<MyApp> {
bool isSwitchedFT = false;

@override
void initState() {
// TODO: implement initState
super.initState();
getSwitchValues();
}

getSwitchValues() async {
isSwitchedFT = await getSwitchState();
setState(() {});
}

Future<bool> saveSwitchState(bool value) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setBool("switchState", value);
print('Switch Value saved $value');
return prefs.setBool("switchState", value);
}

Future<bool> getSwitchState() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
bool isSwitchedFT = prefs.getBool("switchState");
print(isSwitchedFT);

return isSwitchedFT;
}

@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Container(
child: Center(
child: Switch(
value: isSwitchedFT,
onChanged: (bool value) {
setState(() {
isSwitchedFT = value;
saveSwitchState(value);
print('Saved state is $isSwitchedFT');
//switch works
});
print(isSwitchedFT);
},
activeTrackColor: Color(0xFF1D1F33),
activeColor: Colors.purple[500],
),
),
),
),
);
}
}

关于android - Flutter 拨动开关和共享首选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59456086/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com