首页 > 其他分享 >Flutter实现将变量保存到本地,之后调用它

Flutter实现将变量保存到本地,之后调用它

时间:2023-08-09 20:34:07浏览次数:35  
标签:存储 调用 本地 保存 SharedPreferences shared Flutter 变量 preferences

1、首先,在pubspec.yaml文件中添加shared_preferences依赖:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.9

这里的版本你需要自己到官网选择下载:Dart package

2、运行flutter pub get命令来获取依赖包。

3、在需要保存变量的地方,导入相关库:

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

4、使用以下代码将变量保存到本地并进行赋值:

Future<void> saveVariable(int value) async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.setInt('my_variable', value);
}

Future<int> loadVariable() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getInt('my_variable') ?? 0;
}

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Save Variable Demo',
      home: Scaffold(
        appBar: AppBar(
          title: Text('Save Variable Demo'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () {
                  saveVariable(42).then((_) {
                    print('Variable saved successfully.');
                  }).catchError((error) {
                    print('Failed to save variable: $error');
                  });
                },
                child: Text('Save Variable'),
              ),
              SizedBox(height: 16),
              FutureBuilder<int>(
                future: loadVariable(),
                builder: (context, snapshot) {
                  if (snapshot.hasData) {
                    final value = snapshot.data!;
                    return Text('My variable is: $value');
                  } else if (snapshot.hasError) {
                    return Text('Failed to load variable');
                  } else {
                    return CircularProgressIndicator();
                  }
                },
              ),
            ],
          ),
        ),
      ),
    );
  }
}

在这个示例中,saveVariable函数使用SharedPreferences.getInstance方法获取SharedPreferences实例,并使用setInt方法将变量保存为整数值。loadVariable函数使用getInt方法从SharedPreferences中读取变量的值。

你可以通过调用saveVariable函数将要写入的变量保存到本地,然后通过调用loadVariable函数来加载并赋值给其他变量。在这个例子中,我们在按钮点击时保存变量为42,并在界面上显示变量的值。

shared_preferences库中,数据会被保存在设备的本地存储中。具体来说,对于Android设备,数据将被保存在SharedPreferences文件中;而对于iOS设备,数据将被保存在NSUserDefaults中。

这些本地存储的位置是由操作系统管理的,并且对应用程序来说是私有的。这意味着其他应用程序无法访问你的应用程序保存的数据。

总之,当你调用SharedPreferences.getInstance()方法时,它会返回一个SharedPreferences实例,该实例提供了一组方法来保存和读取键值对数据,具体的存储位置是由底层操作系统决定的。你不需要关心具体的存储位置,只需通过相关方法进行存储和读取即可。

需要注意的是,shared_preferences库适用于存储小型的键值对数据。如果你需要存储更复杂的数据结构,可以考虑使用其他持久化解决方案,如数据库或文件存储。

标签:存储,调用,本地,保存,SharedPreferences,shared,Flutter,变量,preferences
From: https://blog.51cto.com/u_15997490/7024719

相关文章

  • 前端shp文件写到本地时,原生的shp-write存在的不能写入多条数据及中文乱码问题
    shp-write·Doraemon22333/前端-码云-开源中国(gitee.com)参考(1)https://github.com/hwbllmnn/shp-write/tree/maintenance(2)https://blog.csdn.net/qq_37748236/article/details/131804606......
  • 本地内存跟踪NMT详解
    \本地内存跟踪NMT详解​1.Overview为什么java程序消耗的内存,远超-Xms、-Xmx的限制?因为各种原因,或是为了进行某些优化,JVM会额外分配内存。这些额外的分配,会导致java程序占用的内存,超出-Xmx的限制。本文档列举了通常情况下,JVM会分配哪几部分内存,以及各部分调整大小的方法。......
  • vue import 调用方法 Import是javascript中的一种模块加载方式,在Vue中也可以使用impor
    vueimport调用方法Import是javascript中的一种模块加载方式,在Vue中也可以使用import来加载组件、库或其他模块。使用import语句,可以将需要的模块导入到当前模块的作用域中,以使其可用于当前模块内的执行。原文链接:https://www.yzktw.com.cn/post/1248672.htmlImport是javascri......
  • iOS 子工程(下沉组件 私有库) 调用文件、图片 等资源 方法
    发现问题:在子工程里面使用 [[NSBundlemainBundle]pathForResource:ofType:] 不能找到目标资源文件原因:[[NSBundlemainBundle]pathForResource:ofType:]是获取主程序包(MainBundle)中资源文件路径的方法。主程序包是指你的应用程序本身,而不包括子工程或子项目。那么要......
  • Windows系统 如何配置Maven的本地仓库 【详解Maven settings.xml配置(指定本地仓库、
    1.确认安装Maven首先,我们需要确认已在计算机上安装了Maven。你可以从Maven官方网站:https://archive.apache.org/dist/maven/maven-3/下载适合你代码ide版本的Maven安装包,比如我idea2019就下载maven3.5-3.6之间的版本。1、先新建名为MAVEN_HOME的变量,值为你的的maven解压路径......
  • 在最新更新的 Windows 系统中使用 .net 程序调用一些 https 接口时出现错误:请求被中止
    这是因为出于安全原因,新更新的系统中会默认禁用一些已经过时不安全的加密协议如:SSL3.0、TLS1.0、TLS1.1等但并不是所有接口服务器都已经更新支持了更新的协议所以在确认安全的情况下,可以将这些旧的协议再次启用,以达到兼容旧接口调用的目的方法1:注意:这个修改会在系统全局......
  • win11首次开机不联网创建本地账户
    一、开机后进入到欢迎界面按Shift+F10,打开CMD.exe,如果是笔记本可能需要按Fn+Shift+F10二、输入命令oobe\bypassnro.cmd然后系统会自动重启,重启之后注册界面就会显示离线建立账户的入口......
  • 使用Automatic1111在本地PC上运行SDXL 1.0
    这是我们部署StableDiffusion的第三篇文章了,前两篇文章都详细介绍了Automatic1111的stable-diffusion-webui的安装,这次主要介绍如何使用SDXL1.0模型。https://avoid.overfit.cn/post/3f640647d3eb4360ade44ee997091c87获取项目......
  • c#调用百度地图web服务api-----该方法可用在js跨域请求上
    百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。api官网说明链接:http://developer.baidu.com/map/webservice.htm可用接口列举:获取相关地址提示place......
  • java调用百度地图web服务api-----该方法可用在js跨域请求上
    百度地图Web服务API为开发者提供http接口,即开发者通过http形式发起检索请求,获取返回json或xml格式的检索数据。用户可以基于此开发JavaScript、C#、C++、Java等语言的地图应用。api官网说明链接:http://developer.baidu.com/map/webservice.htm可用接口列举:获取相关地址提示place......