Flutter 创建、读写 json文件

这篇博客介绍了如何在Android和iOS平台上获取读写手机存储的权限,并提供了写入和读取JSON文件的实现方法。通过使用dart:io和permission_handler库,实现了对loginSave.json文件的创建、读取和数据存储功能。

先获取读写手机存储权限


import 'package:permission_handler/permission_handler.dart';

///请求读写手机存储权限
  Future checkPermisson() async {
    if (Platform.isAndroid) {
      //当前权限
      Permission permission = Permission.storage;
      //权限的状态
      PermissionStatus status = await permission.status;

      if (status.isUndetermined) {
        //从未申请过
        print("从未申请过");
        //多个权限申请
        Map<Permission, PermissionStatus> statuses = await [Permission.storage,].request();
      } else if (status.isDenied) {
        //第一次申请用户拒绝
        print("第一次申请用户拒绝");
      } else if (status.isPermanentlyDenied) {
        //用户点击了 拒绝且不再提示
        print("用户点击了 拒绝且不再提示");
      } else {
        //权限通过
        print("权限通过");
        //获取登录保存文件 loginSave.json
        _getLoginSaveFlie();
      }
    }
  }

写入json文件


import 'dart:async';
import 'dart:io';
import 'dart:convert' as convert;

 //创建登录保存文件 loginSave.json
  void _createLoginSaveFlie() async {
    // 登陆成功创建一个文件,文件存在就保存数据
    try {
      //保存路径
      String savePath = "";

      ///判断手机系统型号
      if (Platform.isAndroid) {
        savePath = "/sdcard/Download/" + "loginSave.json";
      } else if (Platform.isIOS) {
        /*//Caches文件夹:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
        Directory tempDir = await getTemporaryDirectory();
        savePath = tempDir.path + "/" + temp.last;*/

        // 获取文档目录的路径
        Directory appDocDir = await getApplicationDocumentsDirectory();
        String dir = appDocDir.path;
        savePath = dir + "/" + "loginSave.json";
      }
      File jsonFile = new File(savePath);
      //判断文件是否存在
      if (!jsonFile.existsSync()) {
        //文件不存在创建文件
        jsonFile.createSync();
        print('loginSave.txt创建成功');
      } else {
        print('loginSave.txt文件已存在');
      }
      //写入数据
      var json = {
        'carrier_user_agreement': true,
      };
      // json文件写入
      jsonFile.writeAsString(convert.jsonEncode(json));
    } catch (e) {
      print('loginSave.txt创建失败');
    }
  }

读取json文件


import 'dart:async';
import 'dart:io';
import 'dart:convert' as convert;

//获取登录保存文件 loginSave.json
  void _getLoginSaveFlie() async {
    try {
      //保存路径
      String savePath = "";

      ///判断手机系统型号
      if (Platform.isAndroid) {
        savePath = "/sdcard/Download/" + "loginSave.json";
      } else if (Platform.isIOS) {
        /*//Caches文件夹:保存应用运行时生成的需要持久化的数据,iTunes同步设备时不会备份该目录。一般存储体积大、不需要备份的非重要数据
        Directory tempDir = await getTemporaryDirectory();
        savePath = tempDir.path + "/" + temp.last;*/

        // 获取文档目录的路径
        Directory appDocDir = await getApplicationDocumentsDirectory();
        String dir = appDocDir.path;
        savePath = dir + "/" + "loginSave.json";
      }
      File jsonFile = new File(savePath);
      //判断文件是否存在
      if (jsonFile.existsSync()) {
        // json文件读取
        var jsonStr = await jsonFile.readAsString();
        var json = convert.jsonDecode(jsonStr);

        print(json['carrier_user_agreement']); // xiaoming
        setState(() {
          _checkbox = json['carrier_user_agreement'];
        });
      } else {
        print('loginSave.txt文件不存在');
        setState(() {
          _checkbox = false;
        });
      }
    } catch (e) {
      print('读取loginSave.txt文件失败');
    }
  }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值