Flutter本地存储插件flutter_local_prefs的使用

Flutter本地存储插件flutter_local_prefs的使用

flutter_local_prefs pub package

此Flutter插件允许你在Android和iOS平台上安全地存储、检索和管理本地偏好设置,包括字符串、整数、布尔值等。所有偏好设置都经过加密以确保数据保护和隐私。

准备工作

Android

确保在android/app/build.gradle文件中的minSdkVersion设置为19或更高:

minSdkVersion 19
iOS

最低支持的iOS版本为12.0。请确保在你的iOS项目配置中设置此版本。

开始使用

安装

pubspec.yaml文件中添加依赖项:

dependencies:
  flutter_local_prefs: ^0.0.1
导入

在Dart文件中导入flutter_local_prefs包:

import 'package:flutter_local_prefs/flutter_local_prefs.dart';

使用方法

以下是一些使用示例:

初始化FlutterLocalPrefs实例
// 初始化实例
FlutterLocalPrefs flutterLocalPrefs = FlutterLocalPrefs();
保存和检索字符串
// 保存数据
await flutterLocalPrefs.saveData(object: "objects", key: "test");

// 检索字符串数据
String key = await flutterLocalPrefs.getString(key: "test");
保存和检索整数
// 保存整数数据
await flutterLocalPrefs.saveData(object: 42, key: "testInt");

// 检索整数数据
int intData = await flutterLocalPrefs.getInt(key: "testInt");
保存和检索布尔值
// 保存布尔值数据
await flutterLocalPrefs.saveData(object: true, key: "testBool");

// 检索布尔值数据
bool boolData = await flutterLocalPrefs.getBool(key: "testBool");
保存和检索双精度浮点数
// 保存双精度浮点数数据
await flutterLocalPrefs.saveData(object: 3.14, key: "testDouble");

// 检索双精度浮点数数据
double doubleData = await flutterLocalPrefs.getDouble(key: "testDouble");
删除数据
// 删除特定键值对
await flutterLocalPrefs.remove(key: "testString");

// 删除所有存储的偏好设置
await flutterLocalPrefs.removeAll();
检查是否存在某个键
// 检查指定键的数据是否存在
bool exists = await flutterLocalPrefs.contain(key: "testString");

详细功能

  • saveData: 在特定键下保存对象(字符串、整数、布尔值等)。
  • getInt / getString / getBool / getDouble / getLong: 按类型检索数据。
  • remove: 删除指定键的数据。
  • removeAll: 删除所有存储的数据。
  • contain: 检查指定键的数据是否存在。

完整示例代码

以下是完整的示例代码:

import 'dart:developer';

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

import 'package:flutter/services.dart';
import 'package:flutter_local_prefs/flutter_local_prefs.dart';

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

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _platformVersion = 'Unknown';
  final _flutterLocalPrefsPlugin = FlutterLocalPrefs();

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

    initPlatformState();
    WidgetsBinding.instance.addPostFrameCallback((_) async {
      FlutterLocalPrefs flutterLocalPrefs = FlutterLocalPrefs();
      await flutterLocalPrefs.saveData(object: "objects", key: "test");
      String key = await flutterLocalPrefs.getString(key: "test");
      log("Result: $key");
    });
  }

  // 平台消息是异步的,因此我们在异步方法中初始化
  Future<void> initPlatformState() async {
    String platformVersion;
    // 平台消息可能失败,所以我们使用try/catch处理PlatformException。
    // 我们还处理消息可能返回null的情况。
    // try {
    //   platformVersion = await _flutterLocalPrefsPlugin.getPlatformVersion() ??
    //       'Unknown platform version';
    // } on PlatformException {
    //   platformVersion = 'Failed to get platform version.';
    // }

    // 如果小部件在异步平台消息还在飞行时从树中移除,我们希望丢弃回复而不是调用setState来更新我们的非存在的外观。
    // if (!mounted) return;

    // setState(() {
    //   _platformVersion = platformVersion;
    // });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('插件示例应用'),
        ),
        body: Center(
          child: Text('运行在: $_platformVersion\n'),
        ),
      ),
    );
  }
}

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

1 回复

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


flutter_local_prefs 是一个用于在 Flutter 应用中存储本地数据的插件。它基于 SharedPreferences,提供了一种简单的方式来存储和读取键值对数据。以下是如何使用 flutter_local_prefs 插件的详细步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  flutter_local_prefs: ^1.0.0  # 请使用最新版本

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

2. 导入插件

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

import 'package:flutter_local_prefs/flutter_local_prefs.dart';

3. 初始化插件

在使用插件之前,你需要先初始化它。通常,你可以在 main 函数中初始化:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await LocalPrefs.init();
  runApp(MyApp());
}

4. 存储数据

你可以使用 LocalPrefs 类中的方法来存储数据。支持的数据类型包括 String, int, double, bool, 和 List<String>

await LocalPrefs.setString('key', 'value');
await LocalPrefs.setInt('key', 42);
await LocalPrefs.setDouble('key', 3.14);
await LocalPrefs.setBool('key', true);
await LocalPrefs.setStringList('key', ['value1', 'value2']);

5. 读取数据

你可以使用 LocalPrefs 类中的方法来读取数据:

String stringValue = LocalPrefs.getString('key', defaultValue: 'default');
int intValue = LocalPrefs.getInt('key', defaultValue: 0);
double doubleValue = LocalPrefs.getDouble('key', defaultValue: 0.0);
bool boolValue = LocalPrefs.getBool('key', defaultValue: false);
List<String> stringListValue = LocalPrefs.getStringList('key', defaultValue: []);

6. 删除数据

你可以使用 LocalPrefs 类中的方法来删除数据:

await LocalPrefs.remove('key');

7. 检查键是否存在

你可以检查某个键是否存在:

bool exists = LocalPrefs.containsKey('key');

8. 清除所有数据

你可以清除所有存储的数据:

await LocalPrefs.clear();

完整示例

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

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await LocalPrefs.init();
  runApp(MyApp());
}

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

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

class _HomeScreenState extends State<HomeScreen> {
  String _storedValue = '';

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

  Future<void> _loadStoredValue() async {
    String value = LocalPrefs.getString('myKey', defaultValue: 'No value stored');
    setState(() {
      _storedValue = value;
    });
  }

  Future<void> _storeValue() async {
    await LocalPrefs.setString('myKey', 'Hello, Flutter!');
    _loadStoredValue();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Local Prefs Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text('Stored Value: $_storedValue'),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _storeValue,
              child: Text('Store Value'),
            ),
          ],
        ),
      ),
    );
  }
}
回到顶部