不了解Internet上关于Flutter中共享偏好的所有这些解释,经过三天的搜索和尝试,我有些沮丧(一点都不正确)。所以我在这里喊我的英雄。
我正在使用Flutter的第一个应用程序工作。用于计算用户项目所需重量的体积。
我有4个屏幕,通过底部的栏激活。 1屏幕是设置屏幕,如果要测量体积(ml)的重量(gr),用户可以输入其(1)混合比,(2)液体重量和(3)布尔值。如果他们正在使用音量,则不需要的选项2会被隐藏。
我希望他们将其填写为设置。这些设置是我在其他页面之一上需要的公式。如果它们什么也没填,我有默认值。我不希望他们每次都必须填写这些设置,而只需填写一次。如果使用其他液体,则两次。 :-)
我已经尝试过SQFLITE软件包,但是我认为该软件包需要SHARED PREFERENCES。我已经在YouTube上观看了所有这些视频,我已经在Google上搜索并阅读并尝试了很多内容,但是我仍然不知道该怎么做以及将代码放置在什么地方。看来,如果我重新输入专家输入的内容,那我将是唯一失败的人。
是的,我是初学者(你们都曾经),现在我正在为这个话题而苦苦挣扎。 我对您的问题: 1.共享的软件包是我应用程序的最佳解决方案吗? 2.在哪里放置用于写入数据库的设置。 3.如何首次在此数据库中放置默认值。 4.是否可以在“设置”屏幕上设置一个值,然后在不使用导航的情况下在另一页上获取该值(因为我使用的是底部栏)。
当你读到最后时:谢谢!
import 'package:flutter/material.dart';
import 'constants.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'dart:async';
class SettingsPage extends StatefulWidget {
@override
SettingsPageState createState() => SettingsPageState();
}
class SettingsPageState extends State<SettingsPage> {
int mixingRatio = 50;
int liquidGravity = 115;
bool weight = true;
@override
void initState() {
super.initState();
}
Future<int> _getIntFromSharedPref() async {
final prefs = await SharedPreferences.getInstance();
final mixingRatio = prefs.getInt('mixingRatio');
if (mixingRatio == null) {
return 50;
}
return mixingRatio;
}
Future<void> _resetMixingRatio() async {
final prefs = await SharedPreferences.getInstance();
await prefs.setInt('mixingRatio', 50);
}
-----------------
onPressed: () {
setState(
() {
weight = true;
weightOrVolume = 'GR';
},
);
},
答案 0 :(得分:1)
回答您的问题。
该软件包是否为我的应用程序提供了最佳解决方案?
对于保存设置,当然这是最好的软件包。
我在哪里放置用于写入数据库的设置。
您可以使用SharedPreference
实例将设置保存在任何地方,例如:
sharedPrefs.putInt("key", 10);
如何首次在此数据库中放置默认值
您可以使用dart语法??
int savedValue = sharedPrefs.getInt("key") ?? 0; // default value will be 0
是否可以在“设置”屏幕上设置一个值,并在另一个页面上获取该值,而无需使用导航。
是的,您可以通过在当前屏幕上使用全局变量或使用getInt
进行检索来实现。