我正在尝试创建一个“首选项”菜单,其中有三个与“共享首选项”一起存储的设置(例如“通知”)。它们将应用于SwitchListTiles。
每次选择我的设置选项卡时,都会发生错误(I / flutter(22754):引发了另一个异常:'package:flutter / src / material / switch_list_tile.dart':失败的断言:第84行pos 15:'value!= null ':不正确。)仅显示一毫秒。之后,将显示正确的设置。当我不向“ ProfileState”中初始化的变量添加默认值时,就会发生这种情况。如果它们具有默认值,则错误消失,但是在选项卡选择中,开关从“默认值”到“共享首选项”中的正确值“闪烁”。
我的假设是我的loadSettings函数在build方法之后执行。
我该如何解决?任何帮助表示赞赏。
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
class Profile extends StatefulWidget {
@override
ProfileState createState() {
return new ProfileState();
}
}
class ProfileState extends State<Profile> {
bool notifications;
bool trackHistory;
bool instantOrders;
@override
void initState() {
super.initState();
loadSettings();
}
//load settings
loadSettings() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
notifications = (prefs.getBool('notifications') ?? true);
trackHistory = (prefs.getBool('trackHistory') ?? true);
instantOrders = (prefs.getBool('instantOrders') ?? false);
}); …Run Code Online (Sandbox Code Playgroud)