Vous pouvez atteindre cet objectif en utilisant CupertinoPageRoute.
Veuillez vérifier le code ci-dessous.
import'package:flutter/material.dart';import'package:flutter/cupertino.dart';void main()=> runApp(newMyApp());classMyAppextendsStatelessWidget{
@override
Widget build(BuildContext context){returnnewMaterialApp(
title:'Transition Animation Demo',
theme:newThemeData(
primarySwatch:Colors.blue,),
home:newFirstPage(),);}}classFirstPageextendsStatefulWidget{
@override
_FirstPageState createState()=>new _FirstPageState();}class _FirstPageState extendsState<FirstPage>{
@override
Widget build(BuildContext context){returnnewScaffold(
appBar:newAppBar(
title:newText('First Page'),),
body:newCenter(
child:newRaisedButton(
child:newText('Goto Second Page'),
onPressed:(){Navigator.of(context).push(newSecondPageRoute());},),),);}}classSecondPageRouteextendsCupertinoPageRoute{SecondPageRoute():super(builder:(BuildContext context)=>newSecondPage());//OPTIONAL IF YOU WISH TO HAVE SOME EXTRA ANIMATION WHILE ROUTING
@override
Widget buildPage(BuildContext context,Animation<double> animation,Animation<double> secondaryAnimation){returnnewFadeTransition(opacity: animation, child:newSecondPage());}}classSecondPageextendsStatefulWidget{
@override
_SecondPageState createState()=>new _SecondPageState();}class _SecondPageState extendsState<SecondPage>{
@override
Widget build(BuildContext context){returnnewScaffold(
appBar:newAppBar(
title:newText('Second Page'),),
body:newCenter(
child:newText('This is the second page'),),);}}
Un peu de jeu autour de l'animation
//OPTIONAL IF YOU WISH TO HAVE SOME EXTRA ANIMATION WHILE ROUTING
@override
Widget buildPage(BuildContext context,Animation<double> animation,Animation<double> secondaryAnimation){returnnewRotationTransition(
turns: animation,
child:newScaleTransition(
scale: animation,
child:newFadeTransition(
opacity: animation,
child:newSecondPage(),),));}
Merci de répondre. J'ai remplacé MaterialPageRoute avec CupertinoPageRoute dans mon code d'application, et a obtenu de glissement des animations.
Merci pour la réponse. J'ai vérifié le flottement de docs pour buildTransitions (docs.flutter.io/scintillement/widgets/ModalRoute/...) et il semble que j'ai à écrire le code pour mon animation à partir de zéro. Dans ce cas, je pense que l'utilisation d' CupertinoPageRoute serait plus simple. Néanmoins, la solution est utile.
Tout simplement les remplacer Fondu avec notre animation habitude de nous aider, car d'animation différentes ont différents arguments.
comment l'utiliser dans les noms de repacements de la Navigation?
J'ai fait de donner à ma propre builders avec carte personnalisée dans pageTransitionsTheme pour l'application du niveau de thème.
classMyAppextendsStatelessWidget{
@override
Widget build(BuildContext context){returnMaterialApp(
title:'Startup Name Generator Tile',
home:RandomWords(),
theme:newThemeData(
primaryColor:Colors.white,//Add the line below to get horizontal sliding transitions for routes.
pageTransitionsTheme:PageTransitionsTheme(builders:{TargetPlatform.android:CupertinoPageTransitionsBuilder(),}),),);}}
Bien sûr, je n'ai pas l'ajout d'une carte d'entrée pour ios que je utilisez uniquement android pour TargetPlatform.
Vous pouvez atteindre cet objectif en utilisant CupertinoPageRoute.
Veuillez vérifier le code ci-dessous.
Un peu de jeu autour de l'animation
MaterialPageRoute
avecCupertinoPageRoute
dans mon code d'application, et a obtenu de glissement des animations.Vous pouvez sous-classe MaterialPageRouteet remplacer buildTransitions.
Par exemple:
à utiliser :
Remplacer transition fondu avec votre animation
buildTransitions
(docs.flutter.io/scintillement/widgets/ModalRoute/...) et il semble que j'ai à écrire le code pour mon animation à partir de zéro. Dans ce cas, je pense que l'utilisation d'CupertinoPageRoute
serait plus simple. Néanmoins, la solution est utile.J'ai fait de donner à ma propre
builders
avec carte personnalisée danspageTransitionsTheme
pour l'application du niveau de thème.Bien sûr, je n'ai pas l'ajout d'une carte d'entrée pour ios que je utilisez uniquement android pour
TargetPlatform
.Vous pouvez utiliser
PageRouteBuilder
.L'exemple suivant montre
FadeTransition
lorsque vous accédez à un deuxième écran.