Flutter 中 shared_preferences

90 阅读1分钟

shared_preferences是一个Flutter插件,用于在应用程序中轻松地存储和检索持久化的键值对数据。这些数据可以被应用程序的所有组件共享,并且在应用程序关闭后也会保留在设备上。

以下是一个简单的示例,演示如何在Flutter应用中使用shared_preferences插件来保存和读取数据:

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

dependencies:
  flutter:
    sdk: flutter
  shared_preferences: ^2.0.6

然后运行flutter pub get来获取依赖包。

接下来,可以在Flutter应用的任何地方使用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(
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  TextEditingController _controller = TextEditingController();
  String _savedText = '';

  @override
  void initState() {
    super.initState();
    _loadSavedText();
  }

  // Function to load saved text from SharedPreferences
  void _loadSavedText() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      _savedText = prefs.getString('saved_text') ?? '';
    });
  }

  // Function to save text to SharedPreferences
  void _saveText() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    prefs.setString('saved_text', _controller.text);
    setState(() {
      _savedText = _controller.text;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Shared Preferences Example'),
      ),
      body: Padding(
        padding: EdgeInsets.all(20.0),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          children: [
            TextField(
              controller: _controller,
              decoration: InputDecoration(labelText: 'Enter some text'),
            ),
            SizedBox(height: 20.0),
            ElevatedButton(
              onPressed: _saveText,
              child: Text('Save Text'),
            ),
            SizedBox(height: 20.0),
            Text(
              'Saved Text:',
              style: TextStyle(fontWeight: FontWeight.bold),
            ),
            Text(_savedText),
          ],
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,包含一个文本输入框和一个按钮。用户在文本输入框中输入文本,并点击按钮后,该文本将被保存到SharedPreferences中,并在下次应用启动时被恢复显示。