这是我的代码。
我想在此代码中使用 shared_preferences 以便用户可以选择自己的字体大小,并且该字体大小适用于整个应用程序。
但是,我被困在使用 shared_preferences 保存它的部分。我尝试参考下面链接中的文章,但没有保存。仍然返回空值。
Flutter,如何将字体大小选项保存到 sharedpreference 中?
如何使用 shared_preferences 保存字体大小?
class MyApp2 extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp2> {
int? _changeFontSize;
final List<int> _fontSizeList = [10, 11,12,13,14,15];
@override
void initState() {
WidgetsBinding.instance!.addPostFrameCallback((_) {
//Retrieving font size
getFontSize().then((value) => setState(() {
_changeFontSize = value as int?;
}));
});
super.initState();
}
void addDefaultValueToSharedPreferences() async {
final sharedPreferences = await SharedPreferences.getInstance();
await sharedPreferences.setInt('fontsize', 1);
}
Future<int?> getFontSize() async {
final sharedPreferences = await SharedPreferences.getInstance();
sharedPreferences.getInt('fontsize');
}
Future<void> updateFontSize(int updatedSize) async {
final sharedPreferences = await SharedPreferences.getInstance();
await sharedPreferences.setInt('fontsize', updatedSize);
}
@override
Widget build(BuildContext context) {
print(_changeFontSize);
print(SharedPreferences.getInstance());
return Center(
child: Column(
children: [
Card(
margin: EdgeInsets.only(bottom: 3),
child: ListTile(
title: Text("Font Size"),
trailing: DropdownButtonHideUnderline(
child: DropdownButton(
isExpanded: false,
value: _changeFontSize,
items: _fontSizeList.map((myFontSize) {
return DropdownMenuItem(
child: Text(myFontSize.toString()),
value: myFontSize,
);
}).toList(),
onChanged: (value) async {
setState(() {
_changeFontSize = value as int?;
});
//Updating font size
await updateFontSize(value as int);
},
hint: Text("Select FontSize"),
),
),
),
),
],
),
);
}
}