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

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

shared_preferences_helper 是一个用于简化 Flutter 中 SharedPreferences 操作的辅助库。通过它,我们可以更方便地读取和写入本地数据。

获取开始

本项目是一个 Dart 包项目的起点,包含可以在多个 Flutter 或 Dart 项目中轻松共享的代码模块。

对于 Flutter 开发者来说,可以参考 Flutter 官方文档,了解更多教程、示例和移动开发指南。

使用示例

以下是一个完整的示例,演示如何在 Flutter 应用中使用 shared_preferences_helper

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:shared_preferences_helper/shared_preferences_helper.dart';

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        body: SharedPreferencesHelperExample(),
      ),
    ),
  );
}

// 定义SharedPreferencesManager类来管理各种类型的数据
class SharedPreferencesManager {
  // 定义不同类型的SharedPreferencesHelper实例
  static SharedPreferencesHelper<String> stringValue = SharedPreferencesHelper("stringValue");
  static SharedPreferencesHelper<int> intValue = SharedPreferencesHelper("intValue");
  static SharedPreferencesHelper<double> doubleValue = SharedPreferencesHelper("doubleValue");
  static SharedPreferencesHelper<bool> booleanValue = SharedPreferencesHelper("booleanValue");
  static SharedPreferencesHelper<List<String>> stringListValue = SharedPreferencesHelper("stringListValue");
}

// 创建一个StatefulWidget来展示如何使用SharedPreferencesHelper
class SharedPreferencesHelperExample extends StatefulWidget {
  [@override](/user/override)
  _SharedPreferencesHelperExampleState createState() => _SharedPreferencesHelperExampleState();
}

class _SharedPreferencesHelperExampleState extends State<SharedPreferencesHelperExample> {
  // 控制器用于文本输入框
  final TextEditingController textEditingControllerHello = TextEditingController();
  // 布尔值开关的初始状态
  bool _switchValue = false;

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

    // 在初始化时从SharedPreferences获取字符串值并更新控制器
    SharedPreferencesManager.stringValue.fetch("Hello").then((value) {
      textEditingControllerHello.text = value;
    });

    // 在初始化时从SharedPreferences获取布尔值并更新UI状态
    SharedPreferencesManager.booleanValue.fetch(false).then((value) {
      setState(() {
        this._switchValue = value;
      });
    });

    // 在初始化时从SharedPreferences获取字符串列表并打印
    SharedPreferencesManager.stringListValue.fetch([]).then((value) {
      value.forEach((element) => print(element));
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 监听文本控制器的变化,并更新SharedPreferences中的值
    textEditingControllerHello.addListener(() {
      SharedPreferencesManager.stringValue.update(textEditingControllerHello.text);
    });

    return Scaffold(
      appBar: AppBar(
        title: Text("Shared Preferences Helper"),
      ),
      body: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text("Shared Preferences Helper Example."),
          CupertinoTextField(
            controller: textEditingControllerHello,
          ),
          CupertinoSwitch(
            value: _switchValue,
            onChanged: (value) {
              // 更新SharedPreferences中的布尔值
              SharedPreferencesManager.booleanValue.update(value);

              // 更新UI状态
              setState(() {
                this._switchValue = value;
              });
            },
          ),
        ],
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter中使用shared_preferences_helper插件进行本地数据存储的示例代码。shared_preferences_helper实际上是一个封装了shared_preferences插件的实用工具类,用于更简洁地处理数据存取。不过需要注意的是,shared_preferences_helper并不是一个官方的Flutter插件,而是一个社区提供的工具类。这里我们假设你已经有了一个类似的封装类,或者我们将直接使用shared_preferences并展示如何封装和使用它。

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

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

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

接下来,我们可以创建一个简单的SharedPreferencesHelper类来封装常用的存储和读取操作。以下是示例代码:

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

class SharedPreferencesHelper {
  SharedPreferences? _preferences;

  Future<SharedPreferences> get preferences async {
    if (_preferences == null) {
      _preferences = await SharedPreferences.getInstance();
    }
    return _preferences!;
  }

  Future<void> setString(String key, String value) async {
    final SharedPreferences prefs = await preferences;
    await prefs.setString(key, value);
  }

  Future<String?> getString(String key) async {
    final SharedPreferences prefs = await preferences;
    return prefs.getString(key);
  }

  // 你可以根据需要添加更多方法,如setInt, setBool, getInt, getBool等
}

现在,我们可以在Flutter应用中使用这个封装类来存储和读取数据。以下是一个简单的使用示例:

import 'package:flutter/material.dart';
import 'package:your_app_name/shared_preferences_helper.dart'; // 根据你的项目结构调整导入路径

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

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

class SharedPreferencesDemo extends StatefulWidget {
  @override
  _SharedPreferencesDemoState createState() => _SharedPreferencesDemoState();
}

class _SharedPreferencesDemoState extends State<SharedPreferencesDemo> {
  final SharedPreferencesHelper _helper = SharedPreferencesHelper();
  String? _savedValue;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SharedPreferences Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              'Saved Value: $_savedValue',
              style: TextStyle(fontSize: 24),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                await _helper.setString('my_key', 'Hello, SharedPreferences!');
                setState(() {
                  _savedValue = await _helper.getString('my_key');
                });
              },
              child: Text('Save Value'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                _savedValue = await _helper.getString('my_key');
                setState(() {});
              },
              child: Text('Retrieve Value'),
            ),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个文本显示保存的值和两个按钮,一个用于保存值,另一个用于检索值。SharedPreferencesHelper类封装了对SharedPreferences的访问,使得在UI组件中存储和读取数据变得更加简单。

请根据你的实际需求调整上述代码,并确保所有导入路径正确无误。

回到顶部