首先查看入口函数:
类MyApp:
MyHomePage:
state:
build:
此demo页面涉及到两个组件:和icon。在这里做一个简单的介绍,更详细的学习请参考flutter官网和相关书籍
在flutter中,我们可以通过Image组件来加载并显示,Image的数据源可以是asset、文件、内存以及网络。
ImageProvider 是一个抽象类,主要定义了数据获取的接口 load() ,从不同的数据源获取需要实现不同的 ImageProvider ,如 AssetImage 是实现了从Asset中加载的ImageProvider,而 NetworkImage 实现了从网络加载的ImageProvider。
Image也提供了一个快捷的构造函数 Imageasset 用于从asset中加载、显示:
Image也提供了一个快捷的构造函数 Imagenetwork 用于从网络加载、显示:
Flutter中,可以像web开发一样使用iconfont,iconfont也即"字体图标",它是将图标做成字体文件,然后通过指定不同的字符而显示不同的。
加号为组件,减一为icon组件。点击加号,数字加1;点击-1,数字减少1。
Flutter教程全套 (全网独家)百度网盘免费资源在线学习
m9z8
Flutter教程全套 (全网独家)
第一套:Flutter 携程17章全-整理好
第五套:Flutter高仿谷歌翻译项目课程
第四套:两小时掌握Flutter移动App开发视频
第三套:flutter入门到精通全套
第七套:Flutter小实战20个
第六套:仿直聘boss的flutter完整教程
第九套:Flutter跨平台开发
第二套:flutter移动电商实战-技术胖
第八套:Flutter基础教程(基础不好的优先看)
24Flutter的打包mp4
23静态资源和项目的处理mp4
22页面跳转并返回数据_mp4
21导航的参数传递和接受-2_mp4
20导航的参数传递和接受-1mp4
Flutter 零基础入门实战视频教程 #01 环境搭建 「14:03」
Flutter 零基础入门实战视频教程 #02 Dart 语言 「17:49」
Flutter 零基础入门实战视频教程 #03 建立 Android studio 虚拟设备 「04:12」
Flutter 零基础入门实战视频教程 #04 建立第一个项目 「08:23」
Flutter 零基础入门实战视频教程 #05 安装配置过程中可能遇到的问题(没遇到者可以跳过) 「05:07」
Flutter 零基础入门实战视频教程 #06 运行 iOS 模拟器 「04:07」
Flutter 零基础入门实战视频教程 #07 Flutter 概述 「06:15」
Flutter 零基础入门实战视频教程 #08 Scaffold && AppBar 「Pro」「06:50」
Flutter 零基础入门实战视频教程 #09 文档和快捷键 「Pro」「02:36」
Flutter 零基础入门实战视频教程 #10 颜色 Colors 「Pro」「05:47」
Flutter 零基础入门实战视频教程 #11 自定义字体 fonts 「Pro」「05:09」
Flutter 零基础入门实战视频教程 #12 hot reload & StatelessWidget 「Pro」「04:56」
Flutter 零基础入门实战视频教程 #13 使用 「Pro」「04:59」
Flutter 零基础入门实战视频教程 #14 使用图标 - Icon 「Pro」「01:27」
Flutter 零基础入门实战视频教程 #15 Button 按钮使用指南 「Pro」「04:35」
Flutter 零基础入门实战视频教程 #16 Container 和 Padding 「Pro」「04: 52」
Flutter 零基础入门实战视频教程 #17 Row 「Pro」「05:24」
Flutter 零基础入门实战视频教程 #18 Column 「Pro」「05:36」
Flutter 零基础入门实战视频教程 #19 Flutter Outline & Shortcuts 「Pro」「03:18」
Flutter 零基础入门实战视频教程 #20 Expanded Widgets 「Pro」「06:06」
Flutter 零基础入门实战视频教程 #21 实战开始 「Pro」「11:42」
Flutter 零基础入门实战视频教程 #22 换个编辑器 - Visual Studio Code 「Pro」「04:50」
Flutter 零基础入门实战视频教程 #23 Stateful vs Stateless Widget 「Pro」「09:45」
Flutter 零基础入门实战视频教程 #24 列表处理 「Pro」「04:54」
Flutter 零基础入门实战视频教程 #25 自定义 class 「Pro」「05:37」
Flutter 零基础入门实战视频教程 #26 card widget 「Pro」「04:26」
Flutter 零基础入门实战视频教程 #27 Extracting Widgets 「Pro」「06:59」
Flutter 零基础入门实战视频教程 #28 删除 - Functions as Parameters - 完结 - 进入实战课 「Pro」「04:35」
Flutter的缓存机制有问题(可能是我使用的版本11213有问题)
网络会默认缓存到本地,但是不管是不是完整的或者损坏的,导致页面在下次进入的时候会优先从缓存里读取。有些是没有加载完成的,或者损坏的,导致无法显示。UI效果就是显示成白色的。
一种解决方式:加载前或者退出后清理缓存
ImageCache imageCache = PaintingBindinginstanceimageCache;
imageCacheclear();
缺点就是每次都想要从网络上获取,增加服务器负担
Image组件的构造方法
在 Android 中,我们都知道,的显示方式有很多,资源、网络、文件等等,在 Flutter 中也有多种方式,用来加载不同形式的:
Image:通过ImageProvider来加载
Imageasset:用来加载本地资源
Imagefile:用来加载本地(File文件)
Imagenetwork:用来加载网络
Imagememory:用来加载Uint8List资源(byte数组)
Image 的一个参数是 ImageProvider,基本上所有形式的加载都是依赖它,这个类里面就是实现加载的原理。用法如下:
加载一个本地资源,和 Android 一样,有多种分辨率的可供选择,但是沿袭的是 iOS 的风格,分为 1x,2x,3x,具体做法是在项目的根目录下创建两个文件夹,如下图所示:
还要配置如下
在pubspecyaml文件
加载一个本地 File ,比如相册中的,用法如下
加载一个网络,用法如下:
有的时候我们需要像Android那样使用一个占位图或者加载出错时显示某张特定的,这时候需要用到 FadeInImage 这个组件:
用来将一个 byte 数组加载成,用法如下:
Image是一个用于展示的组件。支持 JPEG、PNG、GIF、Animated GIF、WebP、Animated WebP、BMP 和 WBMP 等格式。
Imageasset - 用于从资源目录的显示,需要在 pubspecyaml 文件中声明。
Imagenetwork - 用于从网络上显示。
Imagefile - 用于从文件里显示。
Imagememory - 用于从内存里(Uint8List)显示。
alignment → AlignmentGeometry - 图像边界内对齐图像。
centerSlice → Rect - 九片图像的中心切片。
color → Color - 该颜色与每个图像像素混合colorBlendMode。
colorBlendMode → BlendMode - 用于 color 与此图像结合使用。
fit → BoxFit - 图像在布局中分配的空间。
gaplessPlayback → bool - 当图像提供者发生变化时,是继续显示旧图像(true)还是暂时不显示(false)。
image → ImageProvider - 要显示的图像。
matchTextDirection → bool - 是否在图像的方向上绘制图像 TextDirection。
repeat → ImageRepeat - 未充分容器时,是否重复。
height → double - 图像的高度。
width → double - 图像的宽度。
加载资源需要将资源放入工程中,例如:新建images文件夹,将放在该文件夹下,适配则是使用ios的方式1X,2X,3X:
然后在pubspecyaml中配置assets:
加载资源/网络/本地文件/内存:
占位图加载:
圆形:1裁剪实现 2CircleAvatar实现 3Container边框实现
圆角:1裁剪实现 2Container边框实现
BoxFitcontain 全图居中显示但不充满,显示原比例
BoxFitcover 可能拉伸,也可能裁剪,但是充满容器
BoxFitfill 全图显示且填充满,可能会拉伸
BoxFitfitHeight 可能拉伸,可能裁剪,高度充满
BoxFitfitWidth 可能拉伸,可能裁剪,宽度充满
BoxFitscaleDown 效果和contain差不多, 但是只能缩小,不能放大
下一节学习基础组件之Text
flutter开发中,的引用是必不可少的,所以为了提高效率和精准度,我们需要对不同分辨率的手机使用相对应的切图,本章介绍如何进行 分辨率适配 和 批量拓展处理 。
flutter中会首先根据系统的devicePixelRatio(每一个逻辑像素包含多少个原始像素,可以通过MediaQueryDatadevicePixelRatio来得到)来找对应倍数的文件夹下的,如果没有对应倍数,找最接近的。
所以在flutter项目中,我们需要构建对应的倍数像素文件夹
之后再pubspecyaml中,配置assets文件后就可以使用了(如使用"assets/images/jaypng",会自动适配该像素下最接近的jay)。
使用flutter-img-sync插件批量化处理,具体 *** 作如下
目前还不能处理gif、webp等格式的,而且如果和上边介绍的不同像素比适配方案一起使用的话,由于进行了精准定位,所以指定后就不能进行像素适配,这是目前还存在的较大问题,所以目前两者方案只能暂时取一使用。
以上就是关于Flutter入门(二)——实现一个简单的demo页面全部的内容,包括:Flutter入门(二)——实现一个简单的demo页面、求flutter的教学视频!!!!、Flutter 零基础入门实战视频教程(28 个视频)等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)