Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Flutter,都是通过 Dart IO 库来操作文件的,不过和 Dart VM 相比,Flutter 有一个重要差异是文件系统路径不同,这是因为Dart VM 是运行在 PC 或服务器操作系统下,而 Flutter 是运行在移动操作系统中,他们的文件系统会有一些差异。
创新互联公司是一家专注于网站建设、网站制作与策划设计,勉县网站建设哪家好?创新互联公司做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:勉县等地区。勉县做网站价格咨询:028-86922220
Android 和 iOS 的应用存储目录不同, PathProvider 插件提供了一种平台透明的方式来访问设备文件系统上的常用位置。该类当前支持访问两个文件系统位置:
File代表一个整体的文件,他有三个构造函数,分别是:
文件读取本身有两种形式,一种是文本,一种是二进制。
2.2.1 读取文本内容
如果是文本文件,File提供了readAsString、readAsLines、readAsStringSync、readAsLinesSync方法,读取文本内容
readAsString 一次性读取所有文本
readAsLines 一行行的读取文本
结果返回的是一个List,list中表示文件每行的内容
readAsStringSync、readAsLinesSync同步读取文本
2.2.2 读取二进制内容
如果文件是二进制,那么可以使用readAsBytes或者同步的方法readAsBytesSync:
dart中表示二进制有一个专门的类型叫做Uint8List,他实际上表示的是一个int的List。
上面提到的读取方式,都是一次性读取整个文件,缺点就是如果文件太大的话,可能造成内存空间的压力。
所以File为我们提供了另外一种读取文件的方法,流的形式来读取文件.
示例
dart提供了open和openSync两个方法来进行随机文件读写:
写入和文件读取一样,可以一次性写入或者获得一个写入句柄,然后再写入。
一次性写入的方法有四种,分别对应字符串和二进制
句柄形式可以调用openWrite方法,返回一个IOSink对象,然后通过这个对象进行写入:
默认情况下写入是会覆盖整个文件的,但是可以通过下面的方式来更改写入模式:
虽然dart中所有的异常都是运行时异常,但是和java一样,要想手动处理文件读写中的异常,则可以使用try,catch:
我们还是以计数器为例,实现在应用退出重启后可以恢复点击次数。 这里,我们使用文件来保存数据:
1.引入PathProvider插件;在pubspec.yaml文件中添加如下声明:
执行 flutter pub get
2.实现如下
参考:
DecoratedBox可以在其子组件绘制前(或后)绘制一些装饰(Decoration),如背景、边框、渐变等。
DecoratedBox定义如下:
我们通常会直接使用BoxDecoration类,它是一个Decoration的子类,实现了常用的装饰元素的绘制。
圆形头像
圆角头像
泰戈尔的《飞鸟集》
中英对照
<<飞 鸟 集>>
泰戈尔
1
夏天的飞鸟,飞到我的窗前唱歌,又飞去了。
秋天的黄叶,它们没有什么可唱,只叹息一声,飞落在那里。
Stray
birds
of
summer
come
to
my
window
to
sing
and
fly
away.
And
yellow
leaves
of
autumn,
which
have
no
songs,
flutter
and
fall
there
with
a
sign.
2
世界上的一队小小的漂泊者呀,请留下你们的足印在我的文字里。
O
Troupe
of
little
vagrants
of
the
world,
leave
your
footprints
in
my
words.
3
世界对着它的爱人,把它浩翰的面具揭下了。
它变小了,小如一首歌,小如一回永恒的接吻。
The
world
puts
off
its
mask
of
vastness
to
its
lover.
It
becomes
small
as
one
song,
as
one
kiss
of
the
eternal.
4
是大地的泪点,使她的微笑保持着青春不谢。
It
is
the
tears
of
the
earth
that
keep
here
smiles
in
bloom.
5
无垠的沙漠热烈追求一叶绿草的爱,她摇摇头笑着飞开了。
The
mighty
desert
is
burning
for
the
love
of
a
bladeof
grass
who
shakes
her
head
and
laughs
and
flies
away.
6
如果你因失去了太阳而流泪,那么你也将失去群星了。
If
you
shed
tears
when
you
miss
the
sun,
you
also
miss
the
stars.
7
跳舞着的流水呀,在你途中的泥沙,要求你的歌声,你的流动呢。你肯挟
瘸足的泥沙而俱下么?
The
sands
in
your
way
beg
for
your
song
and
your
movement,
dancing
water.
Will
you
carry
the
burden
of
their
lameness?
8
她的热切的脸,如夜雨似的,搅扰着我的梦魂。
Her
wishful
face
haunts
my
dreams
like
the
rain
at
night.
9
有一次,我们梦见大家都是不相识的。
我们醒了,却知道我们原是相亲相爱的。
Once
we
dreamt
that
we
were
strangers.
We
wake
up
to
find
that
we
were
dear
to
each
other.
10
忧思在我的心里平静下去,正如暮色降临在寂静的山林中。
Sorrow
is
hushed
into
peace
in
my
heart
like
the
evening
among
the
silent
trees.
对于每一个开发者而言,开发工具就相当于他们的武器,选择一个合适的工具能够帮助我们在工作时事半功倍,在互联网逐渐发展成熟的今天,越来越多的开发工具供我们选择,但其中总有一些更好用的,如何选择成为了一大难题。
从而颁布了2021年StackShare第八届顶级工具奖,快来看看有没有你青睐的开发工具吧。
年度最佳新兴工具
1.FastAPI
FastAPI 是一个使用 Python3.6+ 构建 Web API 的高性能框架。根据框架创建者的说法,FastAPI 性能与 NodeJS 或 Golang 相当。
2.GitHub Copilot
作为一款 AI 结对编程工具,Copilot 的主要定位是提供类似 IntelliSense/IntelliCode 的代码补全与建议功能,但在实际表现上有望超越同样由微软合作伙伴 OpenAI 开发的 Codex AI 系统。
3.FiglamFigma
Figma 是一个 基于浏览器 的协作式 UI 设计工具,从推出至今越来越受到 UI 设计师的青睐,也有很多的设计团队投入了Figma 的怀抱,
4.Logtail
Logtail是日志服务提供的日志采集Agent,用于采集阿里云ECS、自建IDC、其他云厂商等服务器上的日志。本文介绍Logtail的功能、优势、使用限制及配置流程等信息。
5.Coder
开发人员工作区平台·
6.Charts.csscss
Charts.css 是用于数据可视化的开源 CSS 框架,帮助用户理解数据,帮助开发人员使用简单的 CSS 类将数据转换为漂亮的图表。·
7.Counter
简单并且免费的网络分析·
8.React Query
React Query是一个库,可为任何类型的异步数据提供ReactJS状态管理功能。根据他们的官方文件,·
9.vscode.dev
将VS Code引入浏览器,构建一个可以在浏览器中完全无服务器运行的开发工具。
10.BookStack
BookStack 是一个开源的、基于 Laravel + Vue.js 构建的知识管理和服务平台。具有简单但功能强大的所见即所得编辑器,允许团队轻松创建详细且有用的文档。·
11.ThunderClient
Thunder Client 为我们提供了一款轻量级、易用、整洁、简单的 Rest API 客户端扩展。·我们可以利用 Thunder Client 在编辑器内快速测试代码库的 API 端点,从而最大限度地减少页面的切换。它可以替代 Postman,作为常用的无脚本测试工具。
12.Quod AI
Quod AI Code Search是一个由人工智能驱动的Chrome扩展,可以自动从Git存储库或Jira问题中搜索代码。
它使用问题的标题和描述,并自动在你的Git存储库中找到匹配的内容。
13.Dendron
Dendron 是典型的开源社区编程思维的解决方案,虽然初看起来有一点学习曲线,但从根本上是给了使用者最大的自由发挥空间,同时又提供了最强大和最彻底的工具生态支持。·
14.Notion API
把概念和你每天使用的工具联系起来·
15.Github1s
只需1秒,就可以用VS Code方式来看GitHub代码。·
16.Ocean
容器的无服务器基础架构引擎·
17.Magic
快速构建应用程序,可定制,无密码登录
·
18.Jina
更简单的一种在云上构建神经搜索的方法,
19.Focalboard
一款开源、本地存储、免费的类 Notion 应用Focalboard 的自我定位是“Trello、Notion 和 Asana 的开源、自托管替代品”。·
20.zx
更好地编写脚本的工具(By Google)
21.OpenSearh
OpenSearch是阿里云开放搜索简称,为解决用户结构化数据搜索需求的托管服务,支持数据结构、搜索排序、数据处理自由定制。·
22.Querybook
一个可以发现、创建和共享数据分析、查询以及表的大数据IDE(通过Pinterest),
23.MangoDB
MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。MongoDB就是数据库,是NoSQL类型的数据库
24.TooIJet
Retool的开源替代品·
25.Kitemaker
Kitemaker是为团队而非经理创建的超快速问题跟踪器。为远程团队创建的Jira的快速替代方案·
26.Appflowy
Appflowy 是一款使用 Flutter 和 Rust 构建的开源笔记软件,它支持Windows、macOS和Linux,可以免费下载使用
27.Kubegres
Kubegres 是一个 Kubernetes Operator,用来部署并维护 PostgreSql 集群,提供开箱即用的数据复制和故障转移功能,简化 PostgreSql 集群生命周期管理,降低数据复制的复杂性
28.Lightning Web Components
Lightning Web Components,业内简称LWC,是Salesforce于Spring 19发布的一款新型Lightning Component,快速的企业级Web组件基础
29.Judo
用无代码构建原生应用体验
30.Apache APISIX
Apache APISIX Apache APISIX是一个动态、实时、高性能的API网关。提供了丰富的流量管理功能,如负载均衡、动态上游、canary释放、断路、认证、可观察性等。
31.Control
提供免费的加速、自动化安全性以及SOC2合规
32.Remix
专注于Web技术和现代 用户体验的框架
33.NocoDB
免费并且开源的Airtable替代方案
34.JetBrainsQodana
评估你拥有的、合同或购买的代码的完整性
35.TabnineAI
只能代码编写
36.Coolify
一个开源的,自适应的Heroku和Netlify的替代品
37.Penpot
开源设计和原型平台
38.Portman
Postman介绍:postman是一个开源的接口测试工具,无论是做单个接口的测试还是整套测试脚本的拨测都非常方便。
39.Devops Stack
持续部署Kubernetes环境
40.Slidev
面向开发人员的演示幻灯片
41.ReScript
ReScript 是一门针对 JavaScript 程序员的新语言,特别是对 TypeScript 和 Flow 的类型安全感兴趣的程序员。ReScript 的语法和 JavaScript 非常相似
42.Fig
自定完成终端
43.FlutterFlow
Flutterflow 是一个在线低码平台,使人们在视觉上以人们在视觉上构建本机移动应用程序。
44.Porter
运行在你自己的云中的Heroku
45.SigmaOS
在 SigmaOS 中,你会看到完全不同的浏览器布局,它更像是一个工作台
46.VictoeiaMetrics DB
快速、低成本的监控解决方案和时间序列数据库
47.CloudflarePages
JAMstack平台为前端开发者提供协作和部署网站的平台
48. Devbook
面向开发者的搜索引擎
49.Front Matter
直接在VS Code中管理静态站点
50.Supacase UI
用于企业仪表的React组件库
以上可以说是集结了开发行业中的所有“神器”,不仅能助力程序员高效工作,也是今后走向开发岗位小伙伴们的加薪工具。小伙伴可以从中挑选适合自己的工具~