From cbced30ea5e35c0d8bf4c749a01c0a926297effd Mon Sep 17 00:00:00 2001 From: toly <1981462002@qq.com> Date: Mon, 20 Jul 2020 08:01:56 +0800 Subject: [PATCH] =?UTF-8?q?:pencil:=20=E4=BF=AE=E6=94=B9=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- assets/flutter.db | Bin 700416 -> 704512 bytes .../StatefulWidget/Navigator/node1_base.dart | 170 ++++++++++++++++++ lib/views/widgets/exp/stateful_unit.dart | 1 + lib/views/widgets/widgets_map.dart | 4 + 4 files changed, 175 insertions(+) create mode 100644 lib/views/widgets/StatefulWidget/Navigator/node1_base.dart diff --git a/assets/flutter.db b/assets/flutter.db index 4b635205f3e30a393a2bbadd0bc25e6b05b0844a..e266d0587ea2ed38dd45d2ee799ec72694595b9d 100644 GIT binary patch delta 5505 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 delta 2605 zcmZ|Q32aoy83*t;^X_?X=6N|n>>BLY-1yk_u?Kdr!44S5#DFm|M~n>^a|A+cb2NbM zSp{=Bs$q+lkPwbQNTH#`Njz;77m6SuC=gNwWDrFh2_>{t0X2XqqW!k2R26S`rQh3q z|M_;ldGBeqxp_qMmEmnaQ)fz&bZ~QG9-8@KRYL+w2%Sst7}w#X)Z4lKkt?y=LA}Cf z;!tdd`>qpLY#})ouUIg*wx$7@NE& zyTPuoi|ku=hMi=`*k`Ph9cBmEUiJ>##FiaoOd-O+oi+)Eh({B1l`W5}09;KhskLjTj`aa!5-=^)fjc%l` z(?+_I*3p;gJX%Gk(<$@?T13atT7m#OKQz_C=ViPGY~ZuOdR_(A@k;Pj9=RDy`E>9VUI8xQFM^BtRPbe94ld%8 z!G*jOT)<1f`Memc<&i$;@kpOFybzqrBi+v7kv?bhXTfTo(*%cEJkn?-_kuHdq{SIL z(&BXP2B-0Ku!5(7FY;7yDo+8Y@DX4c9|lh5L%~UW2sn`s0!w)^_ySJ?C-6kDgeQQ{ z^8sKnj|a!|rzM!Jh(85i#_>MjSndL!;|^HJEwF$a;20ixv_^9b<~MzmS(;#`dQ&sq zQ#}5Wp3ISMPg=koaC_Yu@J@9{NkUB(8`7RU@AGD6M6ZY>A@8)N9wlB+c6RgK_E)YV6l(4S|l?NQ>+&h$qw zfg}*xK6BF(CH??h<3O~MNaAyc%3gYM7JtB(k&zX>1d{BKR@vBNmTa%z7rg`$f2gCf z{>c)5W~Mjl74!c)36;(I-&^TU^9FoAca-J-Ckb>^X}i#YtvVWL4U~7_+qeMLN(Vx& z#D;J|9_spJH)@o{_X>))D1Jj)fVxzD1%4Y{4zn1vtZx^sr7hNNwOrY%9g|~~p_qxz<^hVgz3-u1)aUrh~FX!O! zt8Gd@jQWehUZ}=UEJrGXMoPt_I7HN@O3AtHbUUY%r~dsA%RwZFH|*uS&4*-dtxJ;yGw3vHiWn`{&7AJ$E)+xpx(WQD9|tKO=# zimg1O(n_`Zl859Lxk$b+_8YC_W3r7jlR8pK%E)+e+{i_gFA>

hLa%ggT>dn;xWXR_vM3F-nU|nm~cY=C+>_W95r98mSC+ezh7D;xUSp@aDrqVK)SBi_d`e0eqrRZB^ z1EXR|S%iuq9)-jw0sR?S3A^|#aWzrjY}pj9H&*f`t5nH{Az6yJQ=~h(P_p$8mG(A6 zA+oemGT)Lvl~#sai3`P_rs~P2XdR>1Xzejr)#cL?xh9{6+CRwRFZ1=jx;QdPAE34` zRaKQtl*mMg#uAY;M?b8#x2f8GZK;0P$d~Ni`XD(nXNIh-tLCdkLauRD7K4TuR}JH= zWUI!v=q$v?khtM7yhL8X*NC)ap@!8f=0@ZZZCA{%b>tRRH_a3AC`$}h$paZ>iUgCKlTn8F$tFZbJ3C`Y0YW}e z=pv^v@`_%4$YK>`i{@Bz#)bT%bOebrQ9vxrA}JJ&6yecihYRJ3>@u=mMLFX46=aZ! z^2B%5@T{RxV$nR(si0>?(juY~G+GQ@MjomtUnH+0%XL&Bwg*Y6j>d>v8%U{!#)^?` zq)】\n" +// "【onPopPage】 : 出栈回调 【PopPageCallback】", +// } +class NavigatorDemo extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + height: 200, + width: 300, + child: Navigator( + onPopPage: _onPopPage, + initialRoute: '/home-content', + onGenerateRoute: _onGenerateRoute, + observers: [TolyNavigatorObservers()], + ), + ); + } + + Route _onGenerateRoute(RouteSettings settings) { + switch (settings.name) { + case '/home-content': + return MaterialPageRoute( + builder: (_) => HomeContent(), settings: settings); + case "/red": + return MaterialPageRoute(builder: (_) => RedPage(), settings: settings); + case "/yellow": + return MaterialPageRoute( + builder: (_) => YellowPage(), settings: settings); + case "/green": + return MaterialPageRoute( + builder: (_) => GreenPage(), settings: settings); + default: + return MaterialPageRoute( + builder: (_) => HomeContent(), settings: settings); + } + } + + bool _onPopPage(Route route, result) { + print('----_onPopPage-----'); + return true; + } +} + +//路由监听器 +class TolyNavigatorObservers extends NavigatorObserver { + @override + void didPush(Route route, Route previousRoute) { + print( + '--didPush:--route:--${route.settings}--previousRoute:--${previousRoute?.settings}'); + } + + @override + void didStopUserGesture() { + print('--didStopUserGesture:--'); + } + + @override + void didStartUserGesture(Route route, Route previousRoute) { + print( + '--didStartUserGesture:--route:--${route.settings}--previousRoute:--${previousRoute.settings}'); + } + + @override + void didReplace({Route newRoute, Route oldRoute}) { + print( + '--didReplace:--newRoute:--${newRoute.settings}--oldRoute:--${oldRoute.settings}'); + } + + @override + void didRemove(Route route, Route previousRoute) { + print( + '--didRemove:--route:--${route.settings}--previousRoute:--${previousRoute.settings}'); + } + + @override + void didPop(Route route, Route previousRoute) { + print( + '--didPop:--route:--${route.settings}--previousRoute:--${previousRoute.settings}'); + } +} + +class HomeContent extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Container( + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + RaisedButton( + color: Colors.red, + onPressed: () { + Navigator.pushNamed(context, '/red'); + }, + ), + RaisedButton( + color: Colors.yellow, + onPressed: () { + Navigator.pushNamed(context, '/yellow'); + }, + ), + RaisedButton( + color: Colors.green, + onPressed: () { + Navigator.pushNamed(context, '/green'); + }, + ) + ], + ), + ], + ), + ); + } +} + +class RedPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("RedPage"), + ), + body: Container( + color: Colors.red, + ), + ); + } +} + +class YellowPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("YellowPage"), + ), + body: Container( + color: Colors.yellow, + ), + ); + } +} + +class GreenPage extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text("GreenPage"), + ), + body: Container( + color: Colors.green, + ), + ); + } +} diff --git a/lib/views/widgets/exp/stateful_unit.dart b/lib/views/widgets/exp/stateful_unit.dart index b257089..57b151b 100644 --- a/lib/views/widgets/exp/stateful_unit.dart +++ b/lib/views/widgets/exp/stateful_unit.dart @@ -30,6 +30,7 @@ export '../StatefulWidget/CupertinoSlider/node1_base.dart'; export '../StatefulWidget/CupertinoSwitch/node1_base.dart'; export '../StatefulWidget/CupertinoSegmentedControl/node1_base.dart'; export '../StatefulWidget/CupertinoSegmentedControl/node2_color.dart'; +export '../StatefulWidget/Navigator/node1_base.dart'; export '../StatefulWidget/Image/node1_base.dart'; export '../StatefulWidget/Image/node2_fit.dart'; diff --git a/lib/views/widgets/widgets_map.dart b/lib/views/widgets/widgets_map.dart index 5d7059a..f1edcce 100644 --- a/lib/views/widgets/widgets_map.dart +++ b/lib/views/widgets/widgets_map.dart @@ -949,6 +949,10 @@ class WidgetsMap { return [ DividerThemeDemo(), ]; + case "Navigator": + return [ + NavigatorDemo(), + ]; case "SliderTheme": return [ SliderThemeDemo(),