You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 07:37:35