gpt4 book ai didi

android - Flutter/Dart,无法将变量设置为 json Assets 中的值

转载 作者:IT王子 更新时间:2023-10-29 06:58:55 24 4
gpt4 key购买 nike

我的 Assets 文件夹中有一个 json 文件。 json 文件保存我的设置页面上开关的状态。我有一些代码可以读取 t5he json 文件并对其进行解码。

JSON:

{
"ThemeColour" : "blue",
"HighlightState" : false,
"DisplayState" : true
}

代码:

class Settings {
final String themeColour;
final bool highlightState;
final bool displayState;

Settings(this.themeColour, this.highlightState,this.displayState);
}

class SettingsPage extends StatefulWidget {
@override
State createState() => new SettingsPageState();
}

class SettingsPageState extends State<SettingsPage> {
//---------------------------------------
//Load JSON savedSettings
//---------------------------------------
Future loadSavedSettings() async {
String jsonSavedSettings = await _loadSettingsAsset();
Settings savedSettings = _parseJsonForSettings(jsonSavedSettings);

print(savedSettings.displayState);
}

Future<String> _loadSettingsAsset() async {
return await rootBundle.loadString('assets/json/savedSettings.json');
}

Settings _parseJsonForSettings(String jsonString) {
Map decoded = jsonDecode(jsonString);
return Settings(decoded['themeColour'], decoded['HighlightState'], decoded['DisplayState']);
}
//---------------------------------------

@override
Widget build(BuildContext context) {
loadSavedSettings();

bool _highlightState = false;
bool _displayState = false;

当我在 loadSavedSettings() 中使用 print 时,它会打印出正确的值。但是我似乎无法理解代码底部的两个 bool 值是否等于 json 文件中的相应值。

bool _highlightState = HighlightState value in json file;
bool _displayState = DisplayState value in json file;

最佳答案

只需分配值并使用setState(...) 以便在设置值后再次执行build()

  Future loadSavedSettings() async {
String jsonSavedSettings = await _loadSettingsAsset();
Settings savedSettings = _parseJsonForSettings(jsonSavedSettings);

print(savedSettings.displayState);
setState(() {
_highlightState = savedSettings.highlightState;
_displayState = savedSettings.displayState;
});
}

这段代码

  @override
Widget build(BuildContext context) {
loadSavedSettings();

bool _highlightState = false;
bool _displayState = false;

需要改成

  bool _highlightState = false;
bool _displayState = false;

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

@override
Widget build(BuildContext context) {

关于android - Flutter/Dart,无法将变量设置为 json Assets 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54170767/

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