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

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

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

使用

要使用此插件,在你的pubspec.yaml文件中添加shared_preferences_manager作为依赖项。

1. 实例化类

SharedPreferencesManager spm = SharedPreferencesManager();

设置键值对

spm.setKV('key', 'value');

获取键值对

var result = await spm.getKV('key', 'default value');

移除偏好设置

spm.removePreference('test_key');

清除所有偏好设置

spm.removePreference('all');

完整示例

以下是一个完整的示例,展示了如何使用shared_preferences_manager插件进行数据存储和检索。

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

void main() {
  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> {
  final SharedPreferencesManager spm = SharedPreferencesManager();
  String _testValue = '';

  [@override](/user/override)
  void initState() {
    super.initState();
    // 初始化时获取数据
    _getValue();
  }

  Future<void> _setValue() async {
    // 设置键值对
    await spm.setKV('test', 'Hello world');
    setState(() {});
  }

  Future<void> _getValue() async {
    // 获取键值对
    var result = await spm.getKV('test', 'no test value');
    setState(() {
      _testValue = result;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SharedPreferencesManager Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: _setValue,
              child: Text('设置值'),
            ),
            SizedBox(height: 20),
            Text(_testValue),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


当然,下面是一个关于如何在Flutter应用中使用shared_preferences_manager插件进行本地数据存储的示例代码。shared_preferences_manager是一个基于shared_preferences的包装器,提供了更方便的接口来进行数据存储和检索。不过需要注意的是,shared_preferences_manager并非官方或广泛认可的包,因此这里假设你指的是shared_preferences,它是一个非常流行的Flutter插件,用于在本地存储简单的键值对数据。

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

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.15  # 确保使用最新版本

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

接下来,在你的Flutter应用中,你可以按照以下步骤使用shared_preferences

  1. 导入shared_preferences
import 'package:shared_preferences/shared_preferences.dart';
  1. 初始化SharedPreferences实例

由于SharedPreferences是一个单例,你需要在使用它之前进行初始化。这通常是在应用的顶层(如main函数或某个服务的初始化方法中)完成的。

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
  runApp(MyApp(sharedPreferences: sharedPreferences));
}
  1. 在应用中使用SharedPreferences

下面是一个简单的示例,展示如何在Flutter应用中存储和检索数据。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  final SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
  runApp(MyApp(sharedPreferences: sharedPreferences));
}

class MyApp extends StatelessWidget {
  final SharedPreferences sharedPreferences;

  MyApp({required this.sharedPreferences});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'SharedPreferences Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(sharedPreferences: sharedPreferences),
    );
  }
}

class MyHomePage extends StatefulWidget {
  final SharedPreferences sharedPreferences;

  MyHomePage({required this.sharedPreferences});

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final TextEditingController _controller = TextEditingController();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('SharedPreferences Demo'),
      ),
      body: Padding(
        padding: const EdgeInsets.all(16.0),
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            TextField(
              controller: _controller,
              decoration: InputDecoration(
                border: OutlineInputBorder(),
                labelText: 'Enter some text',
              ),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 存储数据
                await widget.sharedPreferences.setString('my_key', _controller.text);
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Data saved')),
                );
              },
              child: Text('Save Data'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () async {
                // 检索数据
                final String? data = await widget.sharedPreferences.getString('my_key');
                ScaffoldMessenger.of(context).showSnackBar(
                  SnackBar(content: Text('Data retrieved: $data')),
                );
              },
              child: Text('Retrieve Data'),
            ),
          ],
        ),
      ),
    );
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,用户可以在文本字段中输入文本,并通过点击按钮将数据保存到SharedPreferences中,或者检索之前保存的数据。

请注意,由于SharedPreferences是基于平台的,因此它可能在某些情况下(如应用被卸载或清除数据)丢失存储的数据。对于更复杂或持久化的存储需求,你可能需要考虑使用SQLite、Hive或其他数据库解决方案。

回到顶部