Flutter 创建、读写 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文件失败');
    }
  }

你可能感兴趣的:(flutter,Android,flutter)