flutter 基本学习

生命周期

  • WidgetsBindingObserver(AppLifecycleState)
  • State
页面展示
  • 构造方法->initState->didChangeDependencies-build(到这一步页面展示出来了)
前台切回后台
  • AppLifecycleState.inactive->AppLifecycleState.paused
后台切回前台
  • AppLifecycleState.inactive->AppLifecycleState.resumed
页面销毁
  • AppLifecycleState.inactive->AppLifecycleState.paused->deactivate-》dispose
OrientationBuilder
  • 这个能监听 横屏竖屏切换
图片

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述

Key

GlobalKey和PageStorageKey区别

Offstage

Curve

曲线

Interval

间隔

    const Curve switchInCurve = Interval(0.4, 1.0, curve: Curves.fastOutSlowIn);

WillPopScope

Backdrop

DefaultTextStyle

PhysicalModel 圆角

SliverAppBar

PreferredSize

事件机制

  dispatcheTouchEvent->onInterceptTouchEvent->子控件
  
  接收到任务分发(diapatchTouchEvent)
  总经理->部门主管->员工
  
  拦截任务(onInterceptTouchEvent,只有viewgroup有这个方法,如果哪一级部门拦截就不会再向下一级部门分发)
  总经理->部门主管->员工
  
  //处理任务消耗(onTouchEvent true自己处理(包括后续事件MOVE UP),,false返回给上级处理)
  总经理->部门主管->员工
  
  //反馈处理结果
  总经理<-部门主管<-员工
  
  
  
  总经理收到任务并通知到最小员工,如果中间有部门拦截并处理,就不会向下传递,否则继续向下传递
  
  
  员工看是否有能力处理,如果有就处理,没有返回给上一级主管反馈情况

配置环境

Flutter安装目录/packages/flutter_tools/gradle/flutter.gradle
maven { url ‘https://maven.aliyun.com/repository/google’ }
maven { url ‘https://maven.aliyun.com/repository/jcenter’ }
maven { url ‘http://maven.aliyun.com/nexus/content/groups/public’ }

路由的使用

1.定义

3.?. ??

null?.a{}??“abc” 和kotlin ?. ?:

异步

asyn标志是异步方法
await 这个方法会返回一个异步对象 future

future.then((value){

})

设置透明度

Opacity{
opacity:0.5
}

stack postion

listview = scrollview 和 listview

import “” show name

List.from

设置点击事件

GestureDetector(
onTab:(){
}
)

宽度撑满

fractionallySizeBox(
widthFactor:1,

)

SizeBox

具体值

FractionallySizedBox

  1. 百分比布局 相对于父布局的百分比,可以溢出父容器显示

LimitedBox 和 ConstrainedBox

  1. 设置最大值 最小值

OverflowBox

1.溢出父容器显示

UnconstrainedBox 解除父元素的限制

由于父元素设置了最大值和最小值,子元素就无法修改,但是子元素可以解除限制去设置,然后再
设置宽高

Theme.of(context).copyWith

listview 设置侧轴无效 侧轴会填充 外层包裹一层container设置值来控制

expanded 设置flex以后 子weiget设置值会无效 一般用于expanded填充或等比例分配外层weiget

stack 层叠weiget 不用设置宽高,始终填充外部的weiget 利用align和postion来实现复杂布局

AspectRatio 默认填充横向屏幕 等比例 不用设置宽度或者高度,会根据父组件来限制

1.在布局限制条件允许的范围内尽可能扩展
2.很多组件不需要设置宽高,会配合父组件一起使用

ClipOval 圆形 width height 来控制圆形

CircleAvatar 圆形头像

sizebox 间距

组件没有父组件的时候宽度(高度) 包含内容
有父组件的时候,填充全屏 button

开发插件和package

1.修改pubspec.yaml文件 名字描述 版本 作者 github主页
2.reademe.md
3.LICENSE

检查
flutter packages pub publish --dry-run
发布
flutter packages pub publish

依赖包冲突
多个依赖都引用第三方依赖
直接在下面引用这个第三方依赖 优先级最高

打包存在多个一样的so文件,冲突
packagingOptions {
pickFirst ‘**/libstlport_shared.so’
}

常用组件

1.safearea
2.expanded
3.wrap
4.animatedContainer
5.Opacity
6.FutureBuilder
7.FadeTransition
8.FloatingActionButton
9.PageView
10.Table
11.SliverAppBar
12.SliverList&SliverGrid
13.FadeinImage
14.SreamBuilder
15.InheritedModel
16.ClipRRect
17.Hero
18.CustomPaint
19.Tooltip
20.FittedBox
21.LayoutBuilder
22.AbsorbPointer
23Transform
24BackdropFilter
25Align
26Positioned
27AnimatedBuilder
28Dismissible(删除组件)
29SizedBox
30ValueListenableBuilder
31Draggable
32AnimateList
33Flexible
34MediaQuery
35Spacer
36InheritedWidget
37AnimatatedIcon
38AspectRatio
39LimitedBox
40Placeholder
41RichText
42ReorderableListView
43AnimatedSwitcher
44AnimatedPositioned
45AnimatedPadding
46IndexedStack
47Semantics
48ContrainedBox
49Stack
50.AnimatedOpacity
51.FractionallySizedBox
52.Listview
53.ListTitle
54.Container
55.SelectableText
56.DataTable
57.Slider, RangeSlider, 和 CupertinoSlider(android中的seekbar)
58.AlertDialog
59.AnimatedCrossFade
60.DraggableScrollableSheet
61.ColorFiltered
62.ToggleButtons
63. CupertinoActionSheet
64.TweenAnimationBuilder
65. Image
66. DefaultTabController TabBar
67.Drawer
68.SnackBar
69.ListWheelScrollView
70.ShaderMask
71.NotificationListener
72.Builder

发布了96 篇原创文章 · 获赞 12 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/yujunlong3919/article/details/105082443