Flutter本地存储插件pro_shered_preference的使用

发布于 1周前 作者 h691938207 来自 Flutter

Flutter本地存储插件pro_shered_preference的使用

平台支持

pro_shered_preference 插件支持以下平台:

  • Android
  • iOS
  • macOS
  • Web
  • Linux
  • Windows

开始使用

  1. 添加依赖
    在终端中运行以下命令来添加 pro_shered_preference 依赖:

    flutter pub add pro_shered_preference
    

    这将自动在 pubspec.yaml 文件中添加如下依赖,并执行 flutter pub get

    dependencies:
      pro_shered_preference: ^0.0.7
    
  2. 导入包
    在 Dart 代码中导入 pro_shered_preference 包:

    import 'package:pro_shered_preference/pro_shered_preference.dart';
    

使用方法

保存数据

pro_shered_preference 提供了多种方法来保存不同类型的数据。以下是一些常见的用法示例:

  1. 保存单个字符串

    bool result = await sheredPrefHelper.setString("name", "Gautam Sheta");
    // 如果数据保存成功,返回 true
    
  2. 保存多个字符串

    bool result = await sheredPrefHelper.setMultiString({
      "name": "Gautam Sheta",
      "email": "email@gmail.com",
      "address": "India",
    });
    // 如果所有数据保存成功,返回 true
    
  3. 保存其他类型的数据

    • 保存整数:setInt
    • 保存浮点数:setDouble
    • 保存布尔值:setBool
    • 保存字符串列表:setStringList
    • 保存整数列表:setIntList
    • 保存浮点数列表:setDoubleList
    • 保存布尔值列表:setBoolList
    • 保存动态类型列表:setDynamicList
    • 保存映射(Map):setMap
    • 保存任意类型的键值对:set

    示例:

    bool result = await sheredPrefHelper.setInt("age", 25);
    bool result = await sheredPrefHelper.setDouble("height", 175.5);
    bool result = await sheredPrefHelper.setBool("isStudent", true);
    bool result = await sheredPrefHelper.setStringList("cities", ["New York", "London", "Paris"]);
    
  4. 批量保存数据

    • 批量保存字符串:setMultiString
    • 批量保存整数:setMultiInt
    • 批量保存浮点数:setMultiDouble
    • 批量保存布尔值:setMultiBool
    • 批量保存字符串列表:setMultiStringList
    • 批量保存整数列表:setMultiIntList
    • 批量保存浮点数列表:setMultiDoubleList
    • 批量保存布尔值列表:setMultiBoolList
    • 批量保存动态类型列表:setMultiDynamicList
    • 批量保存映射(Map):setMultiMap
    • 批量保存任意类型的键值对:setMulti

    示例:

    bool result = await sheredPrefHelper.setMultiString({
      "name": "Gautam",
      "email": "gautam@example.com",
      "address": "India"
    });
    
    bool result = await sheredPrefHelper.setMultiInt({
      "age": 25,
      "score": 95
    });
    
获取数据

pro_shered_preference 提供了多种方法来获取不同类型的数据。以下是一些常见的用法示例:

  1. 获取单个字符串

    String result = await sheredPrefHelper.getString("name");
    // 如果找不到键或数据类型不匹配,会抛出异常
    
  2. 获取多个字符串

    Map<String, String> result = await sheredPrefHelper.getMultiString([
      "name",
      "email",
      "address"
    ]);
    // 如果找不到某个键或数据类型不匹配,会抛出异常
    
  3. 获取其他类型的数据

    • 获取整数:getInt
    • 获取浮点数:getDouble
    • 获取布尔值:getBool
    • 获取字符串列表:getStringList
    • 获取整数列表:getIntList
    • 获取浮点数列表:getDoubleList
    • 获取布尔值列表:getBoolList
    • 获取动态类型列表:getDynamicList
    • 获取映射(Map):getMap
    • 获取任意类型的键值对:get

    示例:

    int age = await sheredPrefHelper.getInt("age");
    double height = await sheredPrefHelper.getDouble("height");
    List<String> cities = await sheredPrefHelper.getStringList("cities");
    
  4. 批量获取数据

    • 批量获取字符串:getMultiString
    • 批量获取整数:getMultiInt
    • 批量获取浮点数:getMultiDouble
    • 批量获取布尔值:getMultiBool
    • 批量获取字符串列表:getMultiStringList
    • 批量获取整数列表:getMultiIntList
    • 批量获取浮点数列表:getMultiDoubleList
    • 批量获取布尔值列表:getMultiBoolList
    • 批量获取动态类型列表:getMultiDynamicList
    • 批量获取映射(Map):getMultiMap
    • 批量获取任意类型的键值对:getMulti

    示例:

    Map<String, String> result = await sheredPrefHelper.getMultiString([
      "name",
      "email",
      "address"
    ]);
    
    Map<String, int> result = await sheredPrefHelper.getMultiInt([
      "age",
      "score"
    ]);
    

完整示例Demo

以下是一个完整的 Flutter 示例,展示了如何使用 pro_shered_preference 插件进行本地存储操作。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  ProSheredPreference sheredPrefHelper = ProSheredPreference();

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Pro Shared Preference Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () async {
            // 单个数据保存
            bool result = await sheredPrefHelper.setString("name", "Gautam Sheta");
            result = await sheredPrefHelper.setInt("age", 25);
            result = await sheredPrefHelper.setDouble("height", 175.5);
            result = await sheredPrefHelper.setBool("isStudent", true);
            result = await sheredPrefHelper.setStringList("cities", ["New York", "London", "Paris"]);

            // 批量数据保存
            result = await sheredPrefHelper.setMultiString({
              "name": "Gautam",
              "email": "gautam@example.com",
              "address": "India"
            });

            result = await sheredPrefHelper.setMultiInt({
              "age": 25,
              "score": 95
            });

            // 获取单个数据
            String name = await sheredPrefHelper.getString("name");
            int age = await sheredPrefHelper.getInt("age");
            double height = await sheredPrefHelper.getDouble("height");
            bool isStudent = await sheredPrefHelper.getBool("isStudent");
            List<String> cities = await sheredPrefHelper.getStringList("cities");

            // 批量获取数据
            Map<String, String> multiStringResult = await sheredPrefHelper.getMultiString([
              "name",
              "email",
              "address"
            ]);

            Map<String, int> multiIntResult = await sheredPrefHelper.getMultiInt([
              "age",
              "score"
            ]);

            // 打印结果
            print("Name: $name");
            print("Age: $age");
            print("Height: $height");
            print("Is Student: $isStudent");
            print("Cities: $cities");
            print("Multi String Result: $multiStringResult");
            print("Multi Int Result: $multiIntResult");
          },
          child: const Text("Save and Get Data"),
        ),
      ),
    );
  }
}

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

1 回复

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


当然,以下是一个关于如何在Flutter中使用pro_shered_preference(注意:通常可能是指shared_preferences,因为pro_shered_preference不是一个广为人知的Flutter插件)进行本地存储的代码示例。由于shared_preferences是一个非常流行的Flutter插件,用于简单的键值对存储,我假设你是指这个插件。

首先,确保你已经在pubspec.yaml文件中添加了shared_preferences依赖:

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.15  # 请检查最新版本号

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

接下来,是一个简单的示例,展示了如何使用shared_preferences来存储和检索数据:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Shared Preferences Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  late SharedPreferences _preferences;
  String? _savedValue;

  @override
  void initState() {
    super.initState();
    // 初始化SharedPreferences实例
    _initPreferences();
  }

  Future<void> _initPreferences() async {
    _preferences = await SharedPreferences.getInstance();
    setState(() {
      // 从SharedPreferences中读取数据
      _savedValue = _preferences.getString('my_key');
    });
  }

  Future<void> _saveValue() async {
    final String valueToSave = 'Hello, SharedPreferences!';
    setState(() {
      _savedValue = valueToSave;
    });
    // 将数据保存到SharedPreferences中
    await _preferences.setString('my_key', valueToSave);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Shared Preferences Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Saved Value: $_savedValue',
              style: TextStyle(fontSize: 20),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: _saveValue,
              child: Text('Save Value'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中:

  1. initState方法中,我们调用_initPreferences来初始化SharedPreferences实例,并从存储中读取现有的值(如果有的话)。
  2. _saveValue方法用于保存一个新的值到SharedPreferences中,并更新UI以显示新保存的值。
  3. UI包含一个Text小部件,用于显示当前保存的值,以及一个ElevatedButton,用于触发保存操作。

这样,你就可以在Flutter应用中使用shared_preferences进行本地存储了。记得在真实的应用中处理可能的异常,例如当SharedPreferences.getInstance()失败时。

回到顶部