Flutter本地存储管理插件preferences_utilities的使用

Flutter本地存储管理插件preferences_utilities的使用

preferences_utilities 是一个非常简单的 SharedPreferences 封装库,用于简化本地存储的使用。通过该库,您可以更方便地读取和写入本地数据。

安装

在您的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  preferences_utilities: ^0.1.0

然后运行 flutter pub get 来安装该库。

使用示例

以下是一个完整的示例,展示如何使用 preferences_utilities 进行本地存储管理。

1. 导入库

首先,在您的 Dart 文件中导入 preferences_utilities 库:

import 'package:preferences_utilities/preferences_utilities.dart';

2. 初始化

在应用程序启动时初始化 PreferencesUtilities。通常可以在 main() 函数中完成:

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

3. 写入数据

您可以使用 PreferencesUtilities 提供的方法来写入不同类型的数据:

Future<void> saveData() async {
  // 保存字符串
  await PreferencesUtilities.setString('username', 'JohnDoe');

  // 保存布尔值
  await PreferencesUtilities.setBool('isLoggedIn', true);

  // 保存整数值
  await PreferencesUtilities.setInt('age', 25);

  // 保存双精度浮点数
  await PreferencesUtilities.setDouble('height', 1.80);

  // 保存列表
  await PreferencesUtilities.setStringList('favoriteColors', ['Red', 'Green', 'Blue']);
}

4. 读取数据

读取数据时,可以使用相应的方法来获取之前保存的值:

Future<void> loadData() async {
  // 获取字符串
  String? username = await PreferencesUtilities.getString('username');
  print('Username: $username');

  // 获取布尔值
  bool? isLoggedIn = await PreferencesUtilities.getBool('isLoggedIn');
  print('Is Logged In: $isLoggedIn');

  // 获取整数值
  int? age = await PreferencesUtilities.getInt('age');
  print('Age: $age');

  // 获取双精度浮点数
  double? height = await PreferencesUtilities.getDouble('height');
  print('Height: $height');

  // 获取列表
  List<String>? favoriteColors = await PreferencesUtilities.getStringList('favoriteColors');
  print('Favorite Colors: $favoriteColors');
}

5. 删除数据

如果您需要删除某个键对应的值,可以使用以下方法:

Future<void> deleteData() async {
  // 删除单个键值对
  await PreferencesUtilities.remove('username');

  // 清空所有数据
  await PreferencesUtilities.clear();
}

完整示例代码

以下是完整的示例代码,包含初始化、写入、读取和删除功能:

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await PreferencesUtilities.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 message = '';

  Future<void> saveData() async {
    // 保存数据
    await PreferencesUtilities.setString('username', 'JohnDoe');
    await PreferencesUtilities.setBool('isLoggedIn', true);
    await PreferencesUtilities.setInt('age', 25);
    await PreferencesUtilities.setDouble('height', 1.80);
    await PreferencesUtilities.setStringList('favoriteColors', ['Red', 'Green', 'Blue']);
    setState(() {
      message = 'Data saved successfully!';
    });
  }

  Future<void> loadData() async {
    // 读取数据
    String? username = await PreferencesUtilities.getString('username');
    bool? isLoggedIn = await PreferencesUtilities.getBool('isLoggedIn');
    int? age = await PreferencesUtilities.getInt('age');
    double? height = await PreferencesUtilities.getDouble('height');
    List<String>? favoriteColors = await PreferencesUtilities.getStringList('favoriteColors');

    setState(() {
      message = '''
      Username: $username
      Is Logged In: $isLoggedIn
      Age: $age
      Height: $height
      Favorite Colors: $favoriteColors
      ''';
    });
  }

  Future<void> deleteData() async {
    // 删除数据
    await PreferencesUtilities.remove('username');
    await PreferencesUtilities.clear();
    setState(() {
      message = 'Data deleted successfully!';
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Preferences Utilities Example'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: saveData,
              child: Text('Save Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: loadData,
              child: Text('Load Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: deleteData,
              child: Text('Delete Data'),
            ),
            SizedBox(height: 20),
            Text(message),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


preferences_utilities 是一个用于简化 Flutter 应用中本地存储管理的插件。它基于 shared_preferences 插件,提供了更简洁的 API 来存储和读取数据。以下是如何使用 preferences_utilities 插件的详细步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  preferences_utilities: ^1.0.0

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

2. 初始化 Preferences

在使用 preferences_utilities 之前,需要先初始化 Preferences 类。通常可以在 main.dart 文件中进行初始化:

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

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

3. 存储数据

preferences_utilities 提供了多种方法来存储不同类型的数据。以下是一些常用的方法:

  • 存储字符串:

    Preferences.setString('key', 'value');
    
  • 存储整数:

    Preferences.setInt('key', 42);
    
  • 存储布尔值:

    Preferences.setBool('key', true);
    
  • 存储双精度浮点数:

    Preferences.setDouble('key', 3.14);
    
  • 存储字符串列表:

    Preferences.setStringList('key', ['value1', 'value2']);
    

4. 读取数据

读取数据的方法与存储数据的方法相对应:

  • 读取字符串:

    String value = Preferences.getString('key', defaultValue: 'default');
    
  • 读取整数:

    int value = Preferences.getInt('key', defaultValue: 0);
    
  • 读取布尔值:

    bool value = Preferences.getBool('key', defaultValue: false);
    
  • 读取双精度浮点数:

    double value = Preferences.getDouble('key', defaultValue: 0.0);
    
  • 读取字符串列表:

    List<String> value = Preferences.getStringList('key', defaultValue: []);
    

5. 删除数据

你可以使用 remove 方法来删除指定的键值对:

Preferences.remove('key');

6. 清除所有数据

如果你想清除所有存储的数据,可以使用 clear 方法:

Preferences.clear();

7. 示例代码

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

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Preferences Utilities Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              ElevatedButton(
                onPressed: () {
                  Preferences.setString('username', 'JohnDoe');
                  print('Username saved');
                },
                child: Text('Save Username'),
              ),
              ElevatedButton(
                onPressed: () {
                  String username = Preferences.getString('username', defaultValue: 'Guest');
                  print('Username: $username');
                },
                child: Text('Load Username'),
              ),
              ElevatedButton(
                onPressed: () {
                  Preferences.remove('username');
                  print('Username removed');
                },
                child: Text('Remove Username'),
              ),
              ElevatedButton(
                onPressed: () {
                  Preferences.clear();
                  print('All data cleared');
                },
                child: Text('Clear All Data'),
              ),
            ],
          ),
        ),
      ),
    );
  }
}
回到顶部