Flutter-16 - 라우팅 애니메이션
void main()=>runApp(MyApp());
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title:'Flutter Demo', theme: new ThemeData( primarySwatch: Colors.blue, ), home:FirstPage() ); } }
pages.dart 페이지의 작성: import'package:flutter/material.dart'; class FirstPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.blue, appBar:AppBar( title:Text('FirstPage',style: TextStyle(fontSize: 36.0)), elevation: 0.0, ), body:Center( child: MaterialButton( child: Icon( Icons.navigate_next, color:Colors.white, size:64.0, ), onPressed: (){ Navigator.of(context).push( MaterialPageRoute( builder:(BuildContext context){ return SecondPage(); })); }, ), ) ); } }
class SecondPage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( backgroundColor: Colors.pinkAccent, appBar: AppBar( title: Text('SecondPage',style:TextStyle(fontSize:36.0),), backgroundColor: Colors.pinkAccent, leading:Container(), elevation: 0.0, ), body:Center( child: MaterialButton( child: Icon( Icons.navigate_before, color:Colors.white, size:64.0 ), onPressed: ()=>Navigator.of(context).pop(), ), ) ); } }
위 코드에는 다음과 같은 새로운 지식이 포함되어 있습니다.
AppBar Widger의 elevation 속성: 이 값은 AppBar가 스크롤할 때의 융합 정도입니다. 일반적으로 스크롤할 때 기본값은 4.0입니다. 현재 우리는 0.0으로 설정했는데 이것은main과 완전히 융합되었습니다.이 페이지 코드를 다 쓴 후에 가장 기본적인 내비게이션을 할 수 있지만 멋진 애니메이션은 없다.
사용자 정의CustomRoute Widget
새 customerouter.dart 파일, 이것은 사용자 정의 루트 방법입니다. 사용자 정의는 먼저 일반적인 루트를 계승하는 구조기 클래스인 PageRouter Builder입니다.상속 후 부류를 다시 쓰는 CustomRoute 구조 방법.구조 방법은 간단하게 이해할 수 있다. 이 클래스나 Widget을 호출하기만 하면 구조 방법의 모든 코드가 실행된다.
import 'package:flutter/material.dart'; class CustomRoute extends PageRouteBuilder{ final Widget widget; CustomRoute(this.widget) :super( transitionDuration:const Duration(seconds:1), pageBuilder:( BuildContext context, Animation animation1, Animation animation2){ return widget; }, transitionsBuilder:( BuildContext context, Animation animation1, Animation animation2, Widget child){ return FadeTransition( opacity: Tween(begin:0.0,end :1.0).animate(CurvedAnimation( parent:animation1, curve:Curves.fastOutSlowIn )), child: child, ); }
);
}
4
4
4
4
라우팅 애니메이션 배율 조정
return ScaleTransition( scale:Tween(begin:0.0,end:1.0).animate(CurvedAnimation( parent:animation1, curve: Curves.fastOutSlowIn )), child:child ); 회전 + 배율 조정 라우팅 애니메이션
회전+축소의 사고방식은 하나의 루트 애니메이션의child 속성에 하나의 애니메이션을 추가하여 두 애니메이션이 동시에 실행되도록 하는 것이다.세부 코드를 보려면 다음과 같이 하십시오.
return RotationTransition( turns:Tween(begin:0.0,end:1.0) .animate(CurvedAnimation( parent: animation1, curve: Curves.fastOutSlowIn )), child:ScaleTransition( scale:Tween(begin: 0.0,end:1.0) .animate(CurvedAnimation( parent: animation1, curve:Curves.fastOutSlowIn )), child: child, ) );
좌우 슬라이딩 라우팅 애니메이션
실용적으로 많이 하는 것은 좌우 슬라이딩 루트 애니메이션인데 사실 실현도 매우 간단하기 때문에 SlideTransition을 직접 사용하면 된다.
//슬라이드 라우팅 애니메이션return SlideTransition(position: Tween(begin: Offset(-1.0, 0.0), end: Offset(0.0, 0.0)).animate(CurvedAnimation( parent: animation1, curve: Curves.fastOutSlowIn )), child: child, );
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.