资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

flutter最新,Flutter app

Flutter 94: 初识 MediaQuery

当我们同时为手机和平板适配编写 app 针对不同屏幕尺寸进行 UI 布局或当用户偏好设置较大字号或是想要最大限度等减少动画等;此时就需要 MediaQuery 来帮我们获取所用设备的信息以及用户设置的偏好信息;

成都创新互联公司是一家专业提供雨花台企业网站建设,专注与做网站、成都网站建设HTML5建站、小程序制作等业务。10年已为雨花台众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。

MediaQuery 一直存在于 WidgetsApp 和 MaterialApp 中, MediaQuery 继承自 InheritedWidget 是一个单独的 Widget ,但一般通过 MediaQuery.of(context) 来获取相关信息;

当相关信息发生变化,例如屏幕旋转等时,屏幕中 Widget 会重新构建,以保持最新状态;我们可以通过 MediaQuery 构造函数和提供的静态方法手动设置对应的相关信息;

MediaQueryData 包含关于媒介的相关信息;一般通过 MediaQuery.of(context) 获取;

size 为媒介的尺寸大小,以逻辑像素为单位;

devicePixelRatio 为像素密度;与设备物理像素有关,与横竖屏等无关;

orientation 为横竖屏, Orientation.landscape 为横屏, Orientation.portrait 为竖屏;

textScaleFactor 为

每个逻辑像素的字体像素数,小菜理解为字体的像素比;注意,小菜设置了默认字体像素密度为标准的 1.2 倍之后调整设备系统字号,其 1.2 倍依旧是以标准字号为基础扩大 1.2 倍;

platformBrightness 为当前设备的亮度模式;注意调整屏幕亮度并不会改变该模式,与当前系统支持的黑暗模式和明亮模式相关;

alwaysUse24HourFormat 为当前设备是否为 24 小时制;

accessibleNavigation 为是否使用 TalkBack 或 VoiceOver 之类的辅助功能与应用程序进行交互,用以辅助视力障碍人群;

invertColors 为是否使用颜色反转,主要用于 iOS 设备;

highContrast 为用户是否要求前景与背景之间的对比度高,主要用于 iOS 设备;

disableAnimations 为平台是否要求禁用或减少动画;

boldText 为平台是否要求使用粗体;

padding 为屏幕内边距,一般是刘海儿屏或异形屏中被系统遮挡部分边距;

viewInsets 为键盘弹出时等遮挡屏幕边距,其中 viewInsets.bottom 为键盘高度;

systemGestureInsets 为手势边距,如 Android Q 之后添加的向左滑动关闭页面等;

viewPadding 小菜理解为视图内边距,为屏幕被刘海儿屏或异形屏中被系统遮挡部分,从 MediaQuery 边界的边缘计算;此值是保持不变;例如,屏幕底部的软件键盘可能会覆盖并占用需要底部填充的相同区域,因此不会影响此值;

physicalDepth 为设备物理层级,小菜暂时还未想到对应的应用场景;

小菜在尝试获取其他子 Widget Size 时,有两点需要注意,首先要设置一个全局的 GlobalKey 来获取当前位置, key 需要为唯一的;第二通过 GlobalKey().currentContext 获取 BuildContext 上下文环境,从而获取对应尺寸;

MediaQuery 案例尝试

小菜对于部分 MediaQueryData 的应用和理解还不够深入;如有错误请多多指导!

Flutter设置APP版本与构建版本

当一个纯Flutter APP开发完成,我们要打包发布到App Store和各大安卓市场,这时候我们需要设置APP的版本号。

如果我们在使用原生iOS或者Android开发的时,我们会在info.plist中设置 version 和 build 或是在build.gradle中设置 versionName 和 versionCode ,他们分别表示APP的版本和构建版本。

但是我们在使用Flutter管理APP版本时,打开 pubspec.yaml 只看到一个 version 字段。这时候我们应该怎么设置APP的 version 和 build 呢?

我们在pub上随便找一个Flutter的组件,例如官方的 camera ,我们可以看到截止目前为止最新的版本为: camera: ^0.5.2+1 。看到这里,我想大家都明白了,Dart采用的是加号式的版本描述方式, + 前面是版本号, + 后面是当前版本的build号。所以我们设置APP的版本号和build次数,在这里设置即可,例如: version: 1.2.0+1 。

当我们新建一个Flutter工程的时候,我们分别使用Xcode和Android Studio打开iOS和Android的工程可以看到,iOS中的 version 和 build 的值分别为 FLUTTER_BUILD_NAME 和 FLUTTER_BUILD_NUMBER :

同样我们打开Android工程可以看到有如下定义:

事实上,Flutter在编译的时候会生成 ios/Flutter/Generated.xcconfig 和 android/local.properties 文件。这两个文件由Flutter编译自动生成,不可更改。记录了包含SDK路径或者文件路径,版本信息,环境配置(release/debug)等信息。原生工程获取版本信息的变量就定义在这两个文件里面。

Dart support is not enabled for the project.解决方法

问题描述:

Mac环境,安装了Android Studio,以及包括Dart插件在内的Flutter插件。在终端运行 flutter doctor ,显示全部配置完成。在Android Studio中创建一个Flutter的新项目,包括运行什么的都完全没问题。但是,我从Git上克隆自己的项目,用Android Studio打开以后,有个警告“dart sdk is not configured”,并且没有Flutter Device Selection按钮,项目无法继续进行。

解决方法:

在网上找到的方法,都是这个:

1、打开File =》Setting =》Language Frameworks = Dart

2、勾选 “enable Dart support for the project”,并且选择Dart SDK path,路径为 D:\install\android\flutter\bin\cache\dart-sdk ,其中D:\install\android\flutter是flutter SDK路径

其实是对的,这就是解决方法。但是我的Android Studio是3.4.2版本的,我打开File是找不到Setting选项的。。。快捷键(ctrl + alt + s)也没反应。

开头入口被堵死了,便想着更新一下Flutter (终端运行 flutter upgrade ), 以获取最新版本的Flutter和Dart SDK, 结果终端毫不留情的直接给了我一段error。于是,经过一番耐心的查找,终于找到了三个入口:

入口一:

入口二:

打开Tools =》Flutter =》Flutter Upgrade =》Language Frameworks = Dart

入口三:

Preferences =》Language Frameworks = Dart

然后操作即可:


网站题目:flutter最新,Flutter app
本文地址:http://cdkjz.cn/article/dsijjeo.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

业务热线:400-028-6601 / 大客户专线   成都:13518219792   座机:028-86922220