一、思考

在Android开发中经常会遇到需要将asset中的文件拷贝到本地目录中,所以Flutter 是否有能够读取 asset 中文件的API呢?rootBundle 就可以解决该问题。

二、代码

flutter:uses-material-design: trueassets:- images/lovely_girl.jpg- images/travel_model.json- images/hello.json
import 'dart:convert';
import 'dart:developer';
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:path_provider/path_provider.dart';class RootBundlePage extends StatefulWidget {const RootBundlePage({Key? key}) : super(key: key);@override_RootBundlePageState createState() => _RootBundlePageState();
}class _RootBundlePageState extends State<RootBundlePage> {@overrideWidget build(BuildContext context) {return Scaffold(appBar: AppBar(title: Text('RootBundle'),),body: Container(child: Column(children: [MaterialButton(onPressed:readDataFromBundle, child: Text('读入数据'),),MaterialButton(onPressed:readAndWriteImage, child: Text('读入图片并写入到指定文件'),),],),),);}void readDataFromBundle() async {String data =  await rootBundle.loadString("images/hello.json");log("readDataFromBundle $data");var mapData = json.decode(data);Person person = Person.from(mapData);log("${person.name}");}void readAndWriteImage() async {String fileName = "lovely_girl.jpg";var bytes = await rootBundle.load("images/lovely_girl.jpg");String dir = (await getApplicationSupportDirectory()).path;String filePath = "$dir/$fileName";ByteBuffer buffer =  bytes.buffer;File file = await new File(filePath).writeAsBytes(buffer.asUint8List(bytes.offsetInBytes,bytes.lengthInBytes));log("readAndWriteImage ${file.path}");//[log] readAndWriteImage /data/user/0/com.example.flutter_widgets/files/lovely_girl.jpg// /data/data/com.example.flutter_widgets/files/lovely_girl.jpg}}//{"name": "lisi", "age": 20, "address": "beijing", "gender":"male"}
class Person{String? name;int? age;String? address;String? gender;Person(this.name, this.age, this.address, this.gender);Person.from(Map<String, dynamic> json){this.name = json['name'];this.age = json['age'];this.address = json['address'];this.gender = json['gender'];}Map<String, dynamic> toJson(){Map<String, dynamic> data = new Map<String, dynamic>();data['name'] = this.name;data['age'] = this.age;data['address'] = this.address;data['gender'] = this.gender;return data;}}

参考:

Flutter读取assets文件并写入应用程序路径 - 简书

Flutter入门系列-Flutter读取assets文件并写入应用程序路径相关推荐

  1. c#读取solidworks文件_CSharpSolidworks C#打开程序路径中后缀为SLDPRT的 文件 C#编程 238万源代码下载- www.pudn.com...

    文件名称: CSharpSolidworks下载 收藏√  [ 5  4  3  2  1 ] 开发工具: C# 文件大小: 402 KB 上传时间: 2013-10-30 下载次数: 11 详细说明 ...

  2. Android开发系列(十七):读取assets文件夹下的数据库文件

    在做Android应用的时候,不可避免要用到数据库.可是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客攻克了我前面博客中 ...

  3. Android 读取assets文件下的txt文件

    ndroid 读取assets文件下的txt文件,解决了读取txt文件的乱码问题: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 ...

  4. android读取assets中的html文件,android读取assets文件.htm

    android读取assets文件 android读取assets文件 style='FONT-SIZE: 14px; FONT-FAMILY: verdana, "ms song" ...

  5. android 读取assets文件夹下的文件资源

    今天,简单讲讲如何读取assets文件夹下的文件. Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.Java里面自动生成该资源文件的ID ...

  6. python3读写excel文件_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...

  7. python写入指定路径的文件_python 从shell读取指定文件以及写入指定文件

    python 从shell读取指定文件以及写入指定文件 运行不同的文件每次都要修改脚本,能不能指定输入文件以及输出文件? python abstract_element.py 1.txt 2.txt ...

  8. python循环读取excel存入列表_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrd import json import operator def read_xlsx(filename): # 打开excel文件 data ...

  9. java代码里的JSON格式怎么写好看_python3 循环读取excel文件并写入json操作

    文件内容: excel内容: 代码: import xlrdimport jsonimport operatordef read_xlsx(filename): # 打开excel文件 data1 = ...

最新文章

  1. win7怎么修改oracle登陆密码,win7账户密码如何修改|win7修改账户密码的详细步骤...
  2. cannot import name 'SpeechLib'
  3. 考c语言三级需要什么软件,全国计算机三级网络技术上机考C语言的软件是什么哈?...
  4. python小游戏代码大全-python简单小游戏代码 怎么用Python制作简单小游戏
  5. 牛客题霸 SQL5 查找所有员工的last_name和first_name以及对应部门编号dept_no
  6. 运行一个Hadoop Job所需要指定的属性
  7. node --- Missing write access to 解决
  8. nodejs命令行执行程序_在NodeJS中编写命令行应用程序
  9. 【数据库系统】文件处理系统和DBMS的主要区别
  10. SELinux系列(十一)——SELinux策略规则查看方法(seinfo和sesearch)详解
  11. C#多态 (小结转载)
  12. 庞果网一道题(字符博弈)的一点想法
  13. 三通短信每月发送量导入Sqlserver随笔
  14. SDK接入学习(一):PlayerSetting详解(PC、Mac、Linux)
  15. linux微软雅黑字体库_一条命令搞定Linux字体渲染——Ubuntu系发行版微软雅黑+宋体终极解决方案...
  16. Python 爬取小说点评网站,用大数据方法找小说
  17. 5年Java面试阿里P6经验总结
  18. 那些我离不开的 Sketch 插件
  19. 数仓基于表级别的数据血缘分析
  20. 阻止点击冒泡的解决方法

热门文章

  1. 截图工具因为计算机无法使用,win7系统截图工具无法使用提示“当前未在计算机上运行”的解决方法...
  2. 一发入魂!15分钟让你快速入门Python
  3. 总线揭密 串行传输VS并行传输
  4. [人工智能-深度学习-61]:生成对抗网络GAN - 图像融合的基本原理与案例
  5. hive时金额为科学记数法转为普通的数字
  6. 帆软报表设计器常用代码知识
  7. 【设计模式】五:依赖倒置与里氏代换原则
  8. 友价商城破解版问题解答 附加最新商城2018仿友价T5商城源码系5月310日更新
  9. 剑与家园服务器维护,剑与家园合服爆料 合服规则介绍
  10. pandas输出excel文件添加表头标题,样式装饰器