Flutter中JSON/SQLite/文本文件增存读遇错,求最简实现示例
最简可修改本地用户数据实现示例
依赖配置
仅需添加一个轻量依赖,修改pubspec.yaml:
dependencies: flutter: sdk: flutter shared_preferences: ^2.2.2
执行命令:
flutter pub get
注意:添加依赖后必须重启应用,不能用热重载/热重启,否则会触发插件未注册的报错。
完整代码实现
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'dart:convert'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text('用户数据管理')), body: const UserDataPage(), ), ); } } class UserDataPage extends StatefulWidget { const UserDataPage({super.key}); @override State<UserDataPage> createState() => _UserDataPageState(); } class _UserDataPageState extends State<UserDataPage> { List<Map<String, dynamic>> _users = []; @override void initState() { super.initState(); _loadUserData(); } // 加载本地存储的用户数据 Future<void> _loadUserData() async { final prefs = await SharedPreferences.getInstance(); final jsonString = prefs.getString('user_data'); if (jsonString != null) { setState(() { _users = List<Map<String, dynamic>>.from(jsonDecode(jsonString)['user']); }); } else { // 初始化默认数据 setState(() { _users = [ {"name": "sife", "age": 44}, {"name": "hasan", "age": 22} ]; }); _saveUserData(); } } // 保存数据到本地 Future<void> _saveUserData() async { final prefs = await SharedPreferences.getInstance(); await prefs.setString('user_data', jsonEncode({"user": _users})); } // 添加新用户 void _addNewUser() { setState(() { _users.add({"name": "faris", "age": 30}); }); _saveUserData(); } @override Widget build(BuildContext context) { return Column( children: [ Expanded( child: ListView.builder( itemCount: _users.length, itemBuilder: (context, index) { final user = _users[index]; return ListTile( title: Text(user['name']), subtitle: Text('年龄:${user['age']}'), ); }, ), ), ElevatedButton( onPressed: _addNewUser, child: const Text('添加用户faris'), ) ], ); } }
关键报错解决
- MissingPluginException:依赖安装后必须重启应用,热重载无法完成插件注册
- 卡在Connecting to VM Service:关闭旧的终端进程,重新执行
flutter run - Unsupported operation: _Namespace:assets目录是只读的,此方案使用shared_preferences封装的可读写存储,无需手动处理路径问题
内容的提问来源于stack exchange,提问作者sife yzn2020
相关产品推荐
相关产品推荐

