flutter - 使用用户的偏好来计算

标签 flutter

不理解互联网上所有关于 Flutter 中的共享首选项的解释,经过三天的搜索和尝试后,我有点(有点不是真的)沮丧。所以我在这里呼唤我的英雄。

我正在开发我的第一个 Flutter 应用程序。它用于计算用户项目所需的重量体积。

我有 4 个屏幕,由底部栏激活。 1 屏幕是设置屏幕,用户可以在其中输入 (1) 混合比,(2) 液体重量和 (3) bool 值(如果他们测量的是体积(ml)的重量(gr))。如果他们正在使用音量,则选项 2 不是必需的,然后隐藏。

我希望他们将其填写为他们的设置。我需要这些设置用于其他页面之一的公式。如果他们什么都不填,我有默认值。我不希望他们每次都必须填写这些设置,而只是一次。如果他们使用另一种液体,或者两次。 :-)

我已经尝试过 SQFLITE 包,但我认为 SHARED PREFERENCES 包是我需要的。我在 YouTube 上观看了所有这些视频,我用谷歌搜索、阅读并尝试了很多项目,但我仍然不明白如果必须做什么以及我把代码放在哪里。似乎总是如果我重新输入专家正在输入的内容,我就是唯一失败的人。

是的,我是一个初学者(你们都曾经是),我现在正在为这个话题而苦苦挣扎。 我的问题是: 1. SHARED PREFERENCES 包是我应用程序的最佳解决方案吗? 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';
                          },
                        );
                      },

最佳答案

回答您的问题。

  1. Is the package SHARED PREFERENCES the best solution for my app?

对于保存设置,这当然是最好的包。

  1. Where do I put the setting for writing the database.

您可以使用 SharedPreference 实例将设置保存在任何地方,例如:

sharedPrefs.putInt("key", 10);
  1. How do I place a default value for the first time in this database

你可以使用 dart 语法获取它 ??

int savedValue = sharedPrefs.getInt("key") ?? 0; // default value will be 0
  1. Is it possible to set a value on the Setting screen, and get the value on another page, without using the Navigation.

是的,您可以通过创建全局变量或在当前屏幕上使用 getInt 检索它来实现。

关于flutter - 使用用户的偏好来计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57124921/

相关文章:

python - 当按下 Flutter 中编程的按钮时,有没有办法可以运行 python 脚本?

flutter - 如何使位于堆栈内部的数据表可滚动

ios - Flutter - 使用 google_maps_webservice 和 google_maps_flutter 的附近地点

flutter - 选择/聚焦 TextFieldForm 时 OutlineInputBorder 消失

添加 "local_auth"库后 Flutter 应用程序运行失败

flutter - "' borderRadius != null I/flutter (28205) : || clipper ! = null ': is not true"为什么我会收到此错误?

flutter - SharedPreferences.getInstance() 抛出 _CastError (对 null 值使用 Null 检查运算符)

listview - flutter ListView 字母表索引

flutter - 将小部件放置在边界框之外

listview - 导航后将滚动 Controller 动画化到 ListView.builder 的顶部