docs:update /docs/flutter.md (#830)
* doc:update docs/flutter.md * docs:update docs/flutter.md * docs:update docs/flutter.md
This commit is contained in:
		
							
								
								
									
										225
									
								
								docs/flutter.md
									
									
									
									
									
								
							
							
						
						
									
										225
									
								
								docs/flutter.md
									
									
									
									
									
								
							@@ -892,7 +892,11 @@ PageView.builder(
 | 
				
			|||||||
  ),
 | 
					  ),
 | 
				
			||||||
),
 | 
					),
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
### flutter动画组件
 | 
					## flutter动画组件
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 1.隐式动画
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> 在动画组件内,直接配置curve和duration属性
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### AnimatedContainer
 | 
					#### AnimatedContainer
 | 
				
			||||||
> 使用AnimatedContainer组件,配置curve曲线过渡和duration过渡时间
 | 
					> 使用AnimatedContainer组件,配置curve曲线过渡和duration过渡时间
 | 
				
			||||||
@@ -938,7 +942,7 @@ class _HomeState extends State<HomeState>{
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### AnimatedPadding
 | 
					#### AnimatedPadding
 | 
				
			||||||
> 通过配置padding值的改变,引起组件的动画效果,同样支持curve和duration的配置
 | 
					> 通过配置padding值的改变,引起组件的移动动画效果,同样支持curve和duration的配置
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```dart
 | 
					```dart
 | 
				
			||||||
class _HomeState extends State<HomeState>{
 | 
					class _HomeState extends State<HomeState>{
 | 
				
			||||||
@@ -975,7 +979,7 @@ class _HomeState extends State<HomeState>{
 | 
				
			|||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#### AnimatedAlign
 | 
					#### AnimatedAlign
 | 
				
			||||||
> 通过配置alignment值的改变,引起组件的动画效果,同样支持curve和duration的配置
 | 
					> 通过配置alignment值的改变,引起组件的对齐动画效果,同样支持curve和duration的配置
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```dart
 | 
					```dart
 | 
				
			||||||
class _HomeState extends State<HomeState>{
 | 
					class _HomeState extends State<HomeState>{
 | 
				
			||||||
@@ -1013,7 +1017,7 @@ class _HomeState extends State<HomeState>{
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#### AnimatedOpacity
 | 
					#### AnimatedOpacity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
>通过配置opacity值的改变,引起组件的动画效果,同样支持curve和duration的配置
 | 
					>通过配置opacity值的改变,引起组件的透明度变化动画效果,同样支持curve和duration的配置
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```dart
 | 
					```dart
 | 
				
			||||||
class _HomeState extends State<HomeState>{
 | 
					class _HomeState extends State<HomeState>{
 | 
				
			||||||
@@ -1048,6 +1052,219 @@ class _HomeState extends State<HomeState>{
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					#### AnimatedPositioned
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> 通过配置top,left,right,bottom值的改变,引起组件的距离变化动画效果,同样支持curve和duration的配置
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```dart
 | 
				
			||||||
 | 
					class _HomeState extends State<HomeState>{
 | 
				
			||||||
 | 
					  bool press = false;
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return MaterialApp(
 | 
				
			||||||
 | 
					        home: Scaffold(
 | 
				
			||||||
 | 
					            floatingActionButton:FloatingActionButton(onPressed: (){
 | 
				
			||||||
 | 
					              setState(() {
 | 
				
			||||||
 | 
					                press = true;
 | 
				
			||||||
 | 
					              });
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					              ,child: const Icon(Icons.add),) ,
 | 
				
			||||||
 | 
					            appBar: AppBar(
 | 
				
			||||||
 | 
					              title: const Text("测试"),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            body:Stack(
 | 
				
			||||||
 | 
					              children: [
 | 
				
			||||||
 | 
					                AnimatedPositioned(
 | 
				
			||||||
 | 
					                  top: press ? 0 : 100,
 | 
				
			||||||
 | 
					                  left:press ? 0 : 100,
 | 
				
			||||||
 | 
					                  curve: Curves.ease, //曲线
 | 
				
			||||||
 | 
					                  duration: const Duration(seconds: 1), //延时
 | 
				
			||||||
 | 
					                  child: Container(
 | 
				
			||||||
 | 
					                    width: 200,
 | 
				
			||||||
 | 
					                    height: 200,
 | 
				
			||||||
 | 
					                    color:Colors.yellow,
 | 
				
			||||||
 | 
					                  ),
 | 
				
			||||||
 | 
					                ),
 | 
				
			||||||
 | 
					              ],
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					### 2.显示动画
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> 使用显示动画,定义AnimationController,在组件上with  SingleTickerProviderStateMixin
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### RotationTransition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					>RotationTransition实现旋转动画,turns为AnimationController,可以在initState初始化的时候设置vsync,duration来让程序和手机的刷新频率统一,使用..联级操作调用repeat函数让动画重复运动
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```dart
 | 
				
			||||||
 | 
					class _Boxed extends State<Boxed> with SingleTickerProviderStateMixin{
 | 
				
			||||||
 | 
					  late AnimationController _controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    _controller = AnimationController(
 | 
				
			||||||
 | 
					        vsync: this,
 | 
				
			||||||
 | 
					        duration: const Duration(seconds: 1)
 | 
				
			||||||
 | 
					    )..repeat(); //让程序和手机的刷新频率统一
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return SizedBox(
 | 
				
			||||||
 | 
					          height: 100,
 | 
				
			||||||
 | 
					          width: 100,
 | 
				
			||||||
 | 
					          child: RotationTransition(turns: _controller,
 | 
				
			||||||
 | 
					            child: const FlutterLogo(size: 60),
 | 
				
			||||||
 | 
					          )
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### AnimationController
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> controller的播放方式
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
 | 
					> repeat 重复 
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
 | 
					> forward 播放一次
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
 | 
					> reverse 倒序播放
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
 | 
					> stop 停止
 | 
				
			||||||
 | 
					>
 | 
				
			||||||
 | 
					> reset 重置
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```dart
 | 
				
			||||||
 | 
					class _HomeState extends State<HomeState> with SingleTickerProviderStateMixin {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  late AnimationController _controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    _controller =
 | 
				
			||||||
 | 
					    AnimationController(vsync: this, duration: const Duration(seconds: 1));//让程序和手机的刷新频率统一
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return MaterialApp(
 | 
				
			||||||
 | 
					        home: Scaffold(
 | 
				
			||||||
 | 
					          floatingActionButton:FloatingActionButton(onPressed: (){
 | 
				
			||||||
 | 
					            _controller.repeat(); //重复播放
 | 
				
			||||||
 | 
					          },child:const Icon(Icons.add),) ,
 | 
				
			||||||
 | 
					            appBar: AppBar(
 | 
				
			||||||
 | 
					              title: const Text("测试"),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            body: Center(
 | 
				
			||||||
 | 
					                child: Column(
 | 
				
			||||||
 | 
					                    children: [RotationTransition(
 | 
				
			||||||
 | 
					                      turns: _controller,
 | 
				
			||||||
 | 
					                      child: const FlutterLogo(size: 60),
 | 
				
			||||||
 | 
					                    ),
 | 
				
			||||||
 | 
					                    ElevatedButton(onPressed: (){
 | 
				
			||||||
 | 
					                      _controller.forward(); //播放一次
 | 
				
			||||||
 | 
					                    }, child:const Icon(Icons.refresh)),
 | 
				
			||||||
 | 
					                      ElevatedButton(onPressed: (){
 | 
				
			||||||
 | 
					                        _controller.reverse(); //倒序播放
 | 
				
			||||||
 | 
					                      }, child:const Icon(Icons.refresh)),
 | 
				
			||||||
 | 
					                      ElevatedButton(onPressed: (){
 | 
				
			||||||
 | 
					                        _controller.stop(); //停止
 | 
				
			||||||
 | 
					                      }, child:const Icon(Icons.refresh)),
 | 
				
			||||||
 | 
					                      ElevatedButton(onPressed: (){
 | 
				
			||||||
 | 
					                        _controller.reset(); //重置
 | 
				
			||||||
 | 
					                      }, child:const Icon(Icons.refresh)),
 | 
				
			||||||
 | 
					                    ]
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### FadeTransition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					>RotationTransition实现透明度变化动画,opacity为AnimationController,可以在initState初始化的时候设置vsync,duration来让程序和手机的刷新频率统一,同时controller为0-1的值,因此opacity会发生从透明到实体的过程,如果要实现实体逐渐到透明可以使用reverse()倒序播放
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```dart
 | 
				
			||||||
 | 
					class _HomeState extends State<HomeState> with SingleTickerProviderStateMixin {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  late AnimationController _controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    _controller =
 | 
				
			||||||
 | 
					        AnimationController(vsync: this, duration: const Duration(seconds: 1));//让程序和手机的刷新频率统一
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return MaterialApp(
 | 
				
			||||||
 | 
					        home: Scaffold(
 | 
				
			||||||
 | 
					            floatingActionButton:FloatingActionButton(onPressed: (){
 | 
				
			||||||
 | 
					              _controller.repeat(); //重复播放
 | 
				
			||||||
 | 
					            },child:const Icon(Icons.add),) ,
 | 
				
			||||||
 | 
					            appBar: AppBar(
 | 
				
			||||||
 | 
					              title: const Text("测试"),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            body: Center(
 | 
				
			||||||
 | 
					              child: FadeTransition(opacity: _controller,
 | 
				
			||||||
 | 
					                child: const FlutterLogo(size: 60,),
 | 
				
			||||||
 | 
					              )
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> 也可以通过lowerBound和upperBound来配置controller的最低和最高值
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#### ScaleTransition
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					> ScaleTransition实现放大缩小动画,scale为AnimationController,可以在initState初始化的时候设置vsync,duration来让程序和手机的刷新频率统一,同时controller为0-1的值,因此scale会发生从小到大的过程,如果要实现大逐渐到小可以使用reverse()倒序播放
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					```dart
 | 
				
			||||||
 | 
					class _HomeState extends State<HomeState> with SingleTickerProviderStateMixin {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  late AnimationController _controller;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  void initState() {
 | 
				
			||||||
 | 
					    super.initState();
 | 
				
			||||||
 | 
					    _controller =
 | 
				
			||||||
 | 
					        AnimationController(vsync: this, duration: const Duration(seconds: 1));//让程序和手机的刷新频率统一
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  @override
 | 
				
			||||||
 | 
					  Widget build(BuildContext context) {
 | 
				
			||||||
 | 
					    return MaterialApp(
 | 
				
			||||||
 | 
					        home: Scaffold(
 | 
				
			||||||
 | 
					            floatingActionButton:FloatingActionButton(onPressed: (){
 | 
				
			||||||
 | 
					              _controller.repeat(); //重复播放
 | 
				
			||||||
 | 
					            },child:const Icon(Icons.add),) ,
 | 
				
			||||||
 | 
					            appBar: AppBar(
 | 
				
			||||||
 | 
					              title: const Text("测试"),
 | 
				
			||||||
 | 
					            ),
 | 
				
			||||||
 | 
					            body: Center(
 | 
				
			||||||
 | 
					                child: ScaleTransition(scale: _controller,
 | 
				
			||||||
 | 
					                  child: const FlutterLogo(size: 60,),
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					            )
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    );
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
另见
 | 
					另见
 | 
				
			||||||
---
 | 
					---
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user