【发布时间】:2019-06-07 19:22:00
【问题描述】:
我的资产文件夹中有一个 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 时,它会打印出正确的值。但是我似乎无法得到它,因此代码底部的两个布尔值等于 json 文件中的相应值。
bool _highlightState = HighlightState value in json file;
bool _displayState = DisplayState value in json file;
【问题讨论】: