Flutter 中数据存储的四种方式

这篇具有很好参考价值的文章主要介绍了Flutter 中数据存储的四种方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flutter数据存储,Flutter开发技术,flutter

在 Flutter 中,存储是指用于本地和远程存储和管理数据的机制。以下是 Flutter 中不同存储选项的概述和示例。

Shared Preferences(本地键值存储)

  • Shared Preferences 是一种在本地存储少量数据(例如用户首选项或设置)的简单方法。
  • 它适合以持久的方式存储键值对。
  • shared_preferences 包通常用于处理 Shared Preferences。
// 将shared_preferences包添加到您的pubspec.yaml文件中。
import 'package:shared_preferences/shared_preferences.dart';

// Storing a value
Future<void> saveData() async {
  final prefs = await SharedPreferences.getInstance();
  prefs.setString('username', 'John');
}

// Retrieving a value
Future<String> fetchData() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString('username');
}

本地数据库(SQLite)

  • 本地数据库,特别是 SQLite,提供了一种在本地存储数据的结构化方法。
  • 它们对于以关系数据库格式存储较大的结构化数据集非常有用。
  • sqflite 包通常用于与 Flutter 中的 SQLite 数据库交互。
// 将 sqflite 包添加到 pubspec.yaml 文件中。
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';

// 初始化数据库
Future<Database> initDatabase() async {
  final path = join(await getDatabasesPath(), 'my_database.db');
  return openDatabase(path, onCreate: (db, version) {
    return db.execute('CREATE TABLE my_table (id INTEGER PRIMARY KEY, name TEXT)');
  }, version: 1);
}

// 将数据插入数据库
Future<void> insertData(String name) async {
  final db = await initDatabase();
  await db.insert('my_table', {'name': name});
}

// 从数据库中查询数据
Future<List<Map<String, dynamic>>?> fetchData() async {
  final db = await initDatabase();
  return db.query('my_table');
}

文件存储

  • Flutter 提供对本地文件存储的访问以保存和读取文件。
  • 该方法适用于需要将数据存储在文件或文档中的场景。
  • path_provider 包有助于获取文件存储的目录路径。
// 将 path_provider 包添加到 pubspec.yaml 文件中。
import 'dart:io';
import 'package:path_provider/path_provider.dart';

// 获取应用程序文档目录
Future<String> getFilePath() async {
  final directory = await getApplicationDocumentsDirectory();
  return File('${directory.path}/my_file.txt').path;
}

// 将数据写入文件
Future<void> writeToFile(String data) async {
  final file = File(await getFilePath());
  await file.writeAsString(data);
}

// 从文件中读取数据
Future<String> readFromFile() async {
  final file = File(await getFilePath());
  return file.readAsString();
}

云存储(Firebase Firestore)

  • Firebase Firestore 等云存储选项允许您将数据存储在云中并跨设备实时同步。
  • 非常适合需要远程数据存储、用户身份验证和实时更新的应用程序。
  • Firebase 是 Fl​​utter 中云存储的流行选择。
// 将 Firebase 包添加到您的 pubspec.yaml 文件中。
import 'package:firebase_core/firebase_core.dart';
import 'package:cloud_firestore/cloud_firestore.dart';

// 初始化 Firebase
await Firebase.initializeApp();

// 将数据添加到 Firestore
Future<void> addData() async {
  final firestore = FirebaseFirestore.instance;
  await firestore.collection('users').doc('user1').set({'name': 'John'});
}

// 从 Firestore 检索数据
Future<String> fetchData() async {
  final firestore = FirebaseFirestore.instance;
  final snapshot = await firestore.collection('users').doc('user1').get();
  return snapshot.data()['name'];
}

可以根据您的具体项目要求选择这些存储选项。无论您需要在本地存储小块数据、管理结构化数据、存储文件还是利用远程云存储,Flutter 都提供各种工具和软件包来帮助您高效处理不同的存储需求。文章来源地址https://www.toymoban.com/news/detail-767986.html

到了这里,关于Flutter 中数据存储的四种方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 创建多线程的四种方式

    ① 创建一个类继承 Thread 类,重写 run() 方法 ② 调用 start() 方法启动线程 例: ① 创建类实现 Runnable 接口,重写 run() 方法 ② 以实现类作为构造器参数,创建一个线程( Thread )对象 ③ 调用 start() 方法启动线程 例 注意:实现Runnable接口方式中,调用的不是Thread类的run()方法

    2024年02月10日
    浏览(49)
  • JavaScript中的四种枚举方式

    字符串和数字具有无数个值,而其他类型如布尔值则是有限的集合。 一周的日子(星期一,星期二,...,星期日),一年的季节(冬季,春季,夏季,秋季)和基本方向(北,东,南,西)都是具有有限值集合的例子。 当一个变量有一个来自有限的预定义常量的值时,使用

    2024年02月03日
    浏览(58)
  • STM32的四种开发方式

    首先看下ST官方给出的四种开发方式的比较 寄存器开发 寄存器编程对于从51等等芯片过渡过来的小伙伴并不陌生,不管你是什么库,最终操作的还是寄存器,所以对于标准库、HAL库、LL库都是在寄存器上的编程,所以可以直接在各种库中直接操作寄存器。 但寄存器开发方法到

    2024年02月11日
    浏览(42)
  • CSS中的四种定位方式

    在CSS中定位有以下4种: 静态定位 - static 相对定位 - relative 绝对定位 - absolute 固定定位 - fixed 静态定位是css中的默认定位方式,也就是没有定位。在此定位方式中设置:top,bottom,left,right,z-index 这些属性都是无效的。 相对位置前的位置: 相对位置后的位置: 可以看到该

    2024年02月08日
    浏览(89)
  • flutter 本地存储数据(shared_preferences)

    一、shared_preferences 本地存储插件简介 shared_preferences 是 Flutter 提供的 本地数据存取 插件 ; 在不同的平台 , 基于不同的机制开发 , 如 Android 平台中基于 SharedPreferences 开发 , iOS 平台中基于 NSUserDefaults 开发 ; 访问本地文件是耗时操作 , 因此访问 shared_preferences 存储是一个 异步操

    2023年04月08日
    浏览(43)
  • SpringBoot导出Excel的四种方式

           近期接到了一个小需求,要将系统中的数据导出为Excel,且能将Excel数据导入到系统。对于大多数研发人员来说,这算是一个最基本的操作了。但是……我居然有点方!         好多年没有实操这种基础的功能了。我对于excel导入导出的印象还停留在才入行时的工作经

    2024年02月03日
    浏览(42)
  • 单例模式的四种创建方式

    单例模式是日常开发中最常见的一种设计模式,常用来做为池对象,或者计数器之类的需要保证全局唯一的场景。 单例模式的目的是保证在整个程序中只存在一个对象实例,使用单例一个前提条件就是构造器私有化,不允许通过new 对象的方式。单例模式的实现主要方式有如

    2024年02月01日
    浏览(46)
  • C++文件读取的四种方式

    C++可以根据不同的目的来选取文件的读取方式,目前为止学习了C++中的四种文件读取方式。 C++文件读取的一般步骤: 1、包含头文件 #includefstream 2、创建流对象:ifstream ifs (这里的ifs是自己起的流对象名字) 3、打开文件:file.open(\\\"文件路径\\\",\\\"打开方式\\\"),打开文件后并判断文件是

    2024年02月11日
    浏览(41)
  • gRpc的四种通信方式详细介绍

    🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐 🌊 《100天精通Golang(基础入门篇)》学会Golang语言

    2024年02月11日
    浏览(41)
  • C#对象的四种比较方式

    1.ReferenceEquals(object o1, object o2): 静态方法: 比较两个对象的引用,引用相同返回true,否则返回false,同为null是返回true; ReferenceEquals进行值类型比较时总是返回false,因为两个值类型需要分别装箱到对象中,是不同的引用 ; 从名称中便可知它用来比较两者是否是相同的引

    2024年02月16日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包