首页 > 其他分享 >flutter随笔

flutter随笔

时间:2024-04-03 15:22:06浏览次数:19  
标签:widget return get ScreenType Platform 随笔 flutter

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组件详解

标签:widget,return,get,ScreenType,Platform,随笔,flutter
From: https://www.cnblogs.com/sineava/p/18112775

相关文章

  • Flutter应用在苹果商店上架前的准备工作与注意事项
    引言......
  • Flutter应用发布流程详解:从开发到上架一站式指南
     引言Flutter是一款由Google推出的跨平台移动应用开发框架,其强大的性能和流畅的用户体验使其备受开发者青睐。然而,开发一款应用只是第一步,将其成功上架到苹果商店才是实现商业目标的关键一步。本文将详细介绍如何使用Flutter将应用程序上架到苹果商店,让您的应用更快地触达用户,......
  • vscode开发flutter
    Flutter开发app配置国内镜像,或使用vpn,文档在中国网络环境下使用Flutter|Flutter中文文档-Flutter中文开发者网站-Flutter先从官网下载AndroidStudio,下载完成后,命令行运行flutterdoctor指令将检查Windows完整的Flutter开发环境的所有组件。显示缺少......
  • Flutter iOS上架指南
     本文探讨了使用Flutter开发的iOS应用能否上架,以及上架的具体流程。苹果提供了AppStore作为正式上架渠道,同时也有TestFlight供开发者进行内测。合规并通过审核后,Flutter应用可以顺利上架。但上架过程可能存在一些挑战,因此可能需要专业技术人员或上架服务商的协助。Flutter作为......
  • APP跨平台开发框架Flutter
    Flutter是Google打造的高性能、跨平台的UI框架。它可以给开发者提供简单、高效的方式来构建和部署跨平台、高性能移动应用;给用户提供漂亮、无平台区分的app体验。Flutter是如何做到这一点的呢?它的框架结构是怎么样的呢?接下来,我将写一系列的文章分析Flutter的框架层,结合源码分析Fl......
  • 【教程】Flutter 应用混淆
     在移动应用开发中,保护应用代码安全至关重要。Flutter提供了简单易用的混淆工具,帮助开发者在构建release版本应用时有效保护代码。本文将介绍如何在Flutter应用中使用混淆,并提供了相关的操作步骤和注意事项。......
  • flutter 项目结构
    test_2d_model_flutter├──.dart_tool#这个文件夹包含了build之后生成的一些文件,以及一些编译配置,flutterclean之后该文件夹被删除├──.idea#包含了flutter项目的配置信息,不可随意改动,将第三方包映射到包目录下面├──android[test_2d_model_flutter_androi......
  • docker+k8s学习随笔
    1.背景作为一个程序员,每天都跟docker和k8s打交道,我只知道它们给程序员们提供了很大的便利,可以很轻松的扩展/缩减容器,但是却对具体的细节不了解。也不知道为什么要使用docker和k8s,所以非常有必要去学习他们。2.笔记2.1为什么要使用docker呢?说到这个问题,我们先考虑一下如果不......
  • 原创开发flutter3+getX仿抖音App短视频+直播实战
    前几天有分享一篇flutter3.19+dart3.3+getx实战开发抖音app短视频直播项目,得到了很多开发者的关注,这次就来分享下这个项目的视频讲解演示,希望有更多的小伙伴能喜欢~flutter3-douyin仿抖音app短视频直播flutter3.x_douyin跨平台仿抖音app实战开发flutter3+bitsdojo_w......
  • 关于使用IconData时flutter build apk 打包报错Target aot_android_asset_bundle fail
    flutter项目中引入了iconfont.ttf之后,调试时正常,打包就报错。 网上有的说法是:使用了iconfont.ttf里面不存在的icon,但是我使用的都是在iconfont.tt文件中的icon。 我的情况是使用了switch  case给IconData的codePoint动态赋值,下面这种情况就是打包报错的 解决办法是......