flutter随笔

news/发布时间2024/5/18 21:45:44

dart语法

list

// 创建指定长度list
List.generate(6, (index) => CircleButton(index: index));

基础

视图结构

StatelessWidget与StatefulWidget区别

  • StatelessWidget: 无状态的widgets是不可变的,这意味着它们的属性不能改变,所有的值都是final
  • StatefulWidget: 有状态的widgets也是不可变的,内部维护着可变的State

布局约束

  • 上层widget向下层widget传递约束条件
  • 下层widget向上层widget传递大小信息
  • 上层widget决定下层widget的位置

常见Widgets

  • Container: 容器(可添加padding,margin,border,background color等)
  • GridView: 可滚动网格
  • ListView: 可滚动列表
  • Stack: 将widget覆盖到另一个上面(有点类似绝对定位),常搭配Positioned使用
  • Expanded: 分配剩余空间,内部可设置flex
  • Row/Column: 行/列布局,可配置主轴与交叉轴
  • Card: 将相关信息整理到一个有圆角和阴影的盒子中
  • ListTile: 将最多三行的文本、可选的导语以及后面的图标组织在一行中
  • Tooltip: 简单提示
  • Center: 居中布局
  • Align: 放置子widget位于左上,右下等
  • SafeArea: 安全区
  • Inkwell: 常用于右侧展开
  • TextField/TextFormField: 前者纯展示,如果有数据绑定等使用后者,搭配Form
  • ListWheelScrollView: 滚轮列表,可用于时间滚动等功能

自适应与响应式

  • 自适应: 应用以自适应的方式在不同的设备上(移动端和桌面端)运行,需要同时处理鼠标、键盘和触控输入
  • 响应式: 一个响应式应用的布局会根据可用的屏幕大小而调整

设备类型判断

class FormFactor {static double desktop = 900;static double tablet = 600;static double handset = 300;
}ScreenType getFormFactor(BuildContext context) {double deviceWidth = MediaQuery.of(context).size.shortestSide;if (deviceWidth > FormFactor.desktop) return ScreenType.Desktop;if (deviceWidth > FormFactor.tablet) return ScreenType.Tablet;if (deviceWidth > FormFactor.handset) return ScreenType.Handset;return ScreenType.Watch;
}

设备细分

Platform配合kIsWeb(检测是否支持浏览器,web端无Platform)使用

bool get isMobileDevice => !kIsWeb && (Platform.isIOS || Platform.isAndroid);
bool get isDesktopDevice => !kIsWeb && (Platform.isMacOS || Platform.isWindows || Platform.isLinux);
bool get isMobileDeviceOrWeb => kIsWeb || isMobileDevice;
bool get isDesktopDeviceOrWeb => kIsWeb || isDesktopDevice;

跳转页面

Navigator.of(context).push(MaterialPageRoute(builder: (context) => const SongScreen(song: song))
)

可选择文本

return SelectableText('Select me!');// 富文本
return SelectableText.rich(TextSpan(children: [TextSpan(text: 'Hello'),TextSpan(text: 'Bold', style: TextStyle(fontWeight: FontWeight.bold))])
);

flutter常用库

english_words

生成随机英文单词

cupertino_icons

图标库(flutter已经内置)

bitsdojo_window

桌面端:禁用顶部栏,用于定制应用窗口的标题栏

audioplayers

音频播放

其他

开发环境

  1. 安装flutter sdk
  2. 配置环境变量(到bin目录)
  3. vscode安装flutter插件(会自动安装dart)
  4. 安装android studio(安装sdk)
  5. android settings -> system settings -> android sdk -> sdk tools(勾选commond-line tools下载)

连接真机(无数据线)

  1. adb tcpip 任意端口(此时需要数据线连接)
  2. 断开数据线
  3. adb connect 手机ip:刚才的端口

常用命令

# flutter 检测
$ flutter doctor
# 查询所有设备
$ flutter devices
# 运行到指定设备
$ flutter run -d 设备号
# 创建模板项目
$ flutter create project
# flutter拉包
$ flutter pub add 包名
# flutter更新/下载依赖
$ flutter pub get
# 更新flutter
$ flutter upgrade

关闭右上角debug

MaterialApp(debugShowCheckedModeBanner: false
)

快捷键

stless // 快速创建无状态class
stful  // 快速创建状态class

flutter中文文档
dartpad
flutter插件库
flutter cookbook
核心widget
资源与图片
图片在线转App Icon
flutter实战
flutter组件详解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ulsteruni.cn/article/01317855.html

如若内容造成侵权/违法违规/事实不符,请联系编程大学网进行投诉反馈email:xxxxxxxx@qq.com,一经查实,立即删除!

相关文章

书生浦语大模型趣味Demo课程笔记

第二节 书生浦语大模型趣味Demo实践 环境准备 浦语大模型的开发机器支持了cuda11.7的基础环境和一些自动迁移conda配置脚本迁移conda环境命令: studio-conda -o internlm-base -t demo 如果自己安装软件环境:conda create -n demo python==3.10 -y conda activate demo conda…

服务器windows server2008突然不能访问某些网站、远程桌面打不开

下载这个软件,并选择BestPractices,再Apply z直接Apply,没有用 IIS Crypto 是一个免费工具,使管理员能够在 Windows Server 2008、2012、2016、2019 和 2022 上启用或禁用协议、密码、哈希和密钥交换算法。它还允许您重新排序 IIS 提供的 SSL/TLS 密码套件、更改高级设置、…

[转帖]nginx(九)location指令

一 location location最佳实践参考 深入理解location匹配规则 一文理清nginx中的location配置 location讲解最好的博客 URL是如何关联location配置块的 ① 第一部分 location指令的作用: 是根据用户请求的URI来匹配location,匹配success则执行对应的configure配置块 …

易语言数组 ,索引从 1 开始。

如图:本文来自博客园,作者:__username,转载请注明原文链接:https://www.cnblogs.com/code3/p/18111839

算子量化精度验证技术

算子量化精度验证技术人工智能芯片与自动驾驶

实景三维在数字乡村建设中的重要作用

随着科技的飞速发展,数字乡村建设已成为推动乡村振兴、实现农村现代化的重要途径。实景三维技术作为数字乡村建设的重要支撑,正逐渐在各个领域发挥着不可或缺的作用。本文将从实景三维技术在数字乡村中的应用场景、优势及未来展望等方面进行探讨,以期为数字乡村建设提供有益…