diff --git a/assets/flutter.db b/assets/flutter.db index 4b63520..e266d05 100644 Binary files a/assets/flutter.db and b/assets/flutter.db differ diff --git a/lib/views/widgets/StatefulWidget/Navigator/node1_base.dart b/lib/views/widgets/StatefulWidget/Navigator/node1_base.dart new file mode 100644 index 0000000..448e072 --- /dev/null +++ b/lib/views/widgets/StatefulWidget/Navigator/node1_base.dart @@ -0,0 +1,170 @@ +import 'package:flutter/material.dart'; + +/// create by 张风捷特烈 on 2020/7/19 +/// contact me by email 1981462002@qq.com +/// 说明: +/// +// { +// "widgetId": 232, +// "name": 'Navigator基本用法', +// "priority": 1, +// "subtitle": +// "【initialRoute】 : 最初显示路由 【String】\n" +// "【onGenerateRoute】 : 路由生成器 【RouteFactory】\n" +// "【observers】 : 路由监听器 【List】\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(),