MST

星途 面试题库

面试题:Flutter中SharedPreferences本地存储的基本使用

请描述在Flutter项目中如何使用SharedPreferences进行简单的数据存储与读取,比如存储一个字符串类型的用户昵称并读取显示,需要给出关键代码片段。
40.2万 热度难度
前端开发Flutter

知识考点

AI 面试

面试题答案

一键面试
  1. 添加依赖: 在pubspec.yaml文件中添加shared_preferences依赖:
dependencies:
  shared_preferences: ^2.0.15

然后运行flutter pub get下载依赖。

  1. 存储数据
import 'package:shared_preferences/shared_preferences.dart';

Future<void> saveNickname(String nickname) async {
  final prefs = await SharedPreferences.getInstance();
  await prefs.setString('nickname', nickname);
}
  1. 读取数据
import 'package:shared_preferences/shared_preferences.dart';

Future<String?> getNickname() async {
  final prefs = await SharedPreferences.getInstance();
  return prefs.getString('nickname');
}
  1. 在界面中使用
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class NicknamePage extends StatefulWidget {
  @override
  _NicknamePageState createState() => _NicknamePageState();
}

class _NicknamePageState extends State<NicknamePage> {
  String? _nickname;

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

  Future<void> _loadNickname() async {
    final nickname = await getNickname();
    setState(() {
      _nickname = nickname;
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Nickname Storage'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            if (_nickname != null)
              Text('Your nickname: $_nickname'),
            ElevatedButton(
              onPressed: () async {
                await saveNickname('JohnDoe');
                await _loadNickname();
              },
              child: Text('Save Nickname'),
            ),
          ],
        ),
      ),
    );
  }
}