Flutter本地数据存储插件shared_preferences_module的使用

Flutter本地数据存储插件shared_preferences_module的使用

shared_preferences_module

这个模块用于为Juneflow创建shared_preferences模块。

Installation(安装)

  1. 如果Juneflow项目不存在,请按照此指南创建。
  2. 在Juneflow项目的根目录打开终端,输入以下命令:
june add shared_preferences_module

Usage(使用)

以下是一个完整的示例,展示如何使用shared_preferences_module来保存和读取不同类型的数据。

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

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

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  final SharedPreferencesModule prefs = SharedPreferencesModule();

  @override
  void initState() {
    super.initState();
    // 初始化时加载数据
    loadPreferences();
  }

  Future<void> loadPreferences() async {
    // 尝试从'counter'键读取整数值。如果不存在,返回null。
    final int? counter = await prefs.getInt('counter');
    print('Counter Value: $counter');

    // 尝试从'repeat'键读取布尔值。如果不存在,返回null。
    final bool? repeat = await prefs.getBool('repeat');
    print('Repeat Value: $repeat');

    // 尝试从'decimal'键读取双精度值。如果不存在,返回null。
    final double? decimal = await prefs.getDouble('decimal');
    print('Decimal Value: $decimal');

    // 尝试从'action'键读取字符串值。如果不存在,返回null。
    final String? action = await prefs.getString('action');
    print('Action Value: $action');

    // 尝试从'items'键读取字符串列表。如果不存在,返回null。
    final List<String>? items = await prefs.getStringList('items');
    print('Items Value: $items');
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('SharedPreferences Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              ElevatedButton(
                onPressed: () async {
                  // 保存整数值到'counter'键
                  await prefs.setInt('counter', 10);
                  print('Saved Counter Value: 10');
                },
                child: Text('Save Integer'),
              ),
              ElevatedButton(
                onPressed: () async {
                  // 保存布尔值到'repeat'键
                  await prefs.setBool('repeat', true);
                  print('Saved Repeat Value: true');
                },
                child: Text('Save Boolean'),
              ),
              ElevatedButton(
                onPressed: () async {
                  // 保存双精度值到'decimal'键
                  await prefs.setDouble('decimal', 1.5);
                  print('Saved Decimal Value: 1.5');
                },
                child: Text('Save Double'),
              ),
              ElevatedButton(
                onPressed: () async {
                  // 保存字符串值到'action'键
                  await prefs.setString('action', 'Start');
                  print('Saved Action Value: Start');
                },
                child: Text('Save String'),
              ),
              ElevatedButton(
                onPressed: () async {
                  // 保存字符串列表到'items'键
                  await prefs.setStringList('items', ['Earth', 'Moon', 'Sun']);
                  print('Saved Items Value: [Earth, Moon, Sun]');
                },
                child: Text('Save List of Strings'),
              ),
              ElevatedButton(
                onPressed: () async {
                  // 移除'counter'键的数据
                  await prefs.remove('counter');
                  print('Removed Counter Key');
                },
                child: Text('Remove Key'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

说明

  1. 保存数据

    • 使用setIntsetBoolsetDoublesetStringsetStringList方法将不同类型的值保存到指定的键中。
  2. 读取数据

    • 使用getIntgetBoolgetDoublegetStringgetStringList方法从指定的键中读取数据。
    • 如果键不存在,则返回null
  3. 移除数据

    • 使用remove方法删除指定键的数据。

输出示例

运行上述代码后,控制台会打印以下内容:

Counter Value: 10
Repeat Value: true
Decimal Value: 1.5
Action Value: Start
Items Value: [Earth, Moon, Sun]
Saved Counter Value: 10
Saved Repeat Value: true
Saved Decimal Value: 1.5
Saved Action Value: Start
Saved Items Value: [Earth, Moon, Sun]
Removed Counter Key

更多关于Flutter本地数据存储插件shared_preferences_module的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter本地数据存储插件shared_preferences_module的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


shared_preferences 是 Flutter 中一个非常常用的插件,用于在本地存储简单的键值对数据。它通常用于存储用户偏好设置、应用配置等小量数据。下面是如何使用 shared_preferences 插件的详细步骤。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在需要使用 shared_preferences 的 Dart 文件中导入插件:

import 'package:shared_preferences/shared_preferences.dart';

3. 写入数据

你可以使用 SharedPreferences 实例来存储数据。以下是一些常见数据类型的存储示例:

// 存储字符串
Future<void> saveString() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setString('key_string', 'Hello, Flutter!');
}

// 存储整数
Future<void> saveInt() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setInt('key_int', 42);
}

// 存储布尔值
Future<void> saveBool() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setBool('key_bool', true);
}

// 存储浮点数
Future<void> saveDouble() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setDouble('key_double', 3.14);
}

// 存储字符串列表
Future<void> saveStringList() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.setStringList('key_string_list', ['Flutter', 'Dart', 'Firebase']);
}

4. 读取数据

你可以使用 SharedPreferences 实例来读取之前存储的数据:

// 读取字符串
Future<String?> readString() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getString('key_string');
}

// 读取整数
Future<int?> readInt() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getInt('key_int');
}

// 读取布尔值
Future<bool?> readBool() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getBool('key_bool');
}

// 读取浮点数
Future<double?> readDouble() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getDouble('key_double');
}

// 读取字符串列表
Future<List<String>?> readStringList() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  return prefs.getStringList('key_string_list');
}

5. 删除数据

你可以使用 SharedPreferences 实例来删除存储的数据:

// 删除指定键的数据
Future<void> removeData() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.remove('key_string');
}

// 清空所有数据
Future<void> clearData() async {
  SharedPreferences prefs = await SharedPreferences.getInstance();
  await prefs.clear();
}

6. 完整示例

以下是一个完整的示例,展示了如何使用 shared_preferences 插件来存储和读取数据:

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SharedPreferencesExample(),
    );
  }
}

class SharedPreferencesExample extends StatefulWidget {
  [@override](/user/override)
  _SharedPreferencesExampleState createState() => _SharedPreferencesExampleState();
}

class _SharedPreferencesExampleState extends State<SharedPreferencesExample> {
  String? storedString;

  [@override](/user/override)
  void initState() {
    super.initState();
    loadData();
  }

  Future<void> loadData() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      storedString = prefs.getString('key_string') ?? 'No data found';
    });
  }

  Future<void> saveData() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString('key_string', 'Hello, Flutter!');
    loadData();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SharedPreferences Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Stored Data: $storedString',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: saveData,
              child: Text('Save Data'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部