diff --git a/docs/widget/scrollview/gridview/code.md b/docs/widget/scrollview/gridview/code.md index e69de29..ccab53d 100644 --- a/docs/widget/scrollview/gridview/code.md +++ b/docs/widget/scrollview/gridview/code.md @@ -0,0 +1,22 @@ +### ***GridView*** + +> GridView可创建一个二维的网格布局 +``` + + GridView({ + Key key, + Axis scrollDirection: Axis.vertical, + bool reverse: false, + ScrollController controller, + bool primary, + ScrollPhysics physics, + bool shrinkWrap: false, + EdgeInsetsGeometry padding, + @required SliverGridDelegate gridDelegate, + bool addAutomaticKeepAlives: true, + bool addRepaintBoundaries: true, + bool addSemanticIndexes: true, + double cacheExtent, + List children: const [], + int semanticChildCount +}) diff --git a/docs/widget/scrollview/gridview/index.md b/docs/widget/scrollview/gridview/index.md index ccab53d..c0dee0c 100644 --- a/docs/widget/scrollview/gridview/index.md +++ b/docs/widget/scrollview/gridview/index.md @@ -1,22 +1,48 @@ -### ***GridView*** - -> GridView可创建一个二维的网格布局 ``` - GridView({ - Key key, - Axis scrollDirection: Axis.vertical, - bool reverse: false, - ScrollController controller, - bool primary, - ScrollPhysics physics, - bool shrinkWrap: false, - EdgeInsetsGeometry padding, - @required SliverGridDelegate gridDelegate, - bool addAutomaticKeepAlives: true, - bool addRepaintBoundaries: true, - bool addSemanticIndexes: true, - double cacheExtent, - List children: const [], - int semanticChildCount -}) +class _DemoState extends State { + bool loading = true; + String ___MD___ = _mdUrl; + + @override + void initState() { + super.initState(); + this.initMd(); + } + + initMd() async { + String mdStr = await FileUtils.readLocaleFile(___MD___); + setState(() { + this.___MD___ = mdStr; + loading = false; + }); + } + + @override + Widget build(BuildContext context) { + return WidgetComp( + name: Demo.name, + codeUrl: Demo.codeUrl, + mdUrl: Demo.mdUrl, + loading: loading, + modelChild: (context, child, model) { + return [ + ___MD___, + Container( + color: Colors.teal.shade700, + alignment: Alignment.center, + child: Text( + 'Hello WorldHello WorldHello WorldHello WorldHello World', + style: Theme.of(context) + .textTheme + .display1 + .copyWith(color: Colors.white), + ), + ), + ]; + }, + ); + } +} + +``` diff --git a/lib/components/baseComp.dart b/lib/components/baseComp.dart index f07ea41..28bd3a0 100644 --- a/lib/components/baseComp.dart +++ b/lib/components/baseComp.dart @@ -15,7 +15,11 @@ class BaseComp extends StatelessWidget { appBar: AppBar( title: Text(this.title), ), - body: this.child(context, child, model), + body: ListView( + children: [ + this.child(context, child, model) + ], + ), ); } ); diff --git a/lib/components/webviewComp.dart b/lib/components/webviewComp.dart index e5a1b99..0f21af1 100644 --- a/lib/components/webviewComp.dart +++ b/lib/components/webviewComp.dart @@ -11,7 +11,7 @@ class WebViewComp extends StatelessWidget { return WebviewScaffold( url: this.url, appBar: new AppBar( - title: new Text("Widget webview"), + title: new Text("Webview"), ), ); } diff --git a/lib/components/widgetLodingComp.dart b/lib/components/widgetLodingComp.dart index 4e2dddf..780f4a1 100644 --- a/lib/components/widgetLodingComp.dart +++ b/lib/components/widgetLodingComp.dart @@ -2,21 +2,25 @@ import 'package:flutter/material.dart'; import 'package:efox_flutter/store/STORE.dart'; import 'package:efox_flutter/components/markdownComp.dart'; import 'package:efox_flutter/lang/app_translations.dart'; +import 'package:efox_flutter/components/baseComp.dart'; +import 'package:efox_flutter/utils/file.dart' as FileUtils; import 'package:efox_flutter/router/index.dart' show FluroRouter; class WidgetComp extends StatelessWidget { final List _bodyList = []; final dynamic modelChild; final String codeUrl; - final String title; + final String mdUrl; + final String name; final bool loading; WidgetComp({ Key key, - this.title, + this.name, @required this.modelChild, this.loading, this.codeUrl, + this.mdUrl, }) : super(key: key); @override @@ -32,7 +36,7 @@ class WidgetComp extends StatelessWidget { }); return Scaffold( appBar: AppBar( - title: Text(this.title), + title: Text(this.name), actions: [ IconButton( icon: Icon( @@ -46,8 +50,18 @@ class WidgetComp extends StatelessWidget { icon: Icon( Icons.code, ), - onPressed: () { - print('prs'); + onPressed: () async { + String mdStr = await FileUtils.readLocaleFile(this.mdUrl); + Navigator.of(context).push(MaterialPageRoute( + builder: (BuildContext context) { + return BaseComp( + title: this.name, + child: (context, child, model) { + return MarkDownComp(mdStr); + } + ); + } + )); }, ), ], diff --git a/lib/main.dart b/lib/main.dart index 54bf32f..b8b55e5 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -7,12 +7,11 @@ import 'package:efox_flutter/lang/app_translations_delegate.dart'; import 'package:efox_flutter/store/store.dart'; //路由 import 'package:efox_flutter/router/index.dart'; -import 'package:fluro/fluro.dart'; void main() => runApp(MainApp()); class MainApp extends StatefulWidget { MainApp() { - FluroRouter.initRouter(Router()); + FluroRouter.initRouter(); } @override MainAppState createState() => MainAppState(); diff --git a/lib/page/tabbar/index.dart b/lib/page/tabbar/index.dart index ca76b21..39cf638 100644 --- a/lib/page/tabbar/index.dart +++ b/lib/page/tabbar/index.dart @@ -1,9 +1,7 @@ import 'package:flutter/material.dart'; import 'package:efox_flutter/lang/app_translations.dart'; -import 'dart:convert'; -import 'package:flutter/services.dart' show rootBundle; -import 'package:efox_flutter/store/objects/widget_list.dart'; import 'package:efox_flutter/router/index.dart'; +import 'package:efox_flutter/widget/index.dart' as WidgetRoot; class ComponentsPage extends StatefulWidget { _ComponentsPageState createState() => _ComponentsPageState(); @@ -16,18 +14,7 @@ class _ComponentsPageState extends State @override initState() { super.initState(); - getWidgetList().then((res) { - setState(() { - mapList = res.list; - }); - }); - } - - getWidgetList() async { - String widgetString = await rootBundle - .loadString('assets/json/widget_list.json', cache: false); - var _tmpMap = new WidgetListInfo.fromJson(json.decode(widgetString)); - return _tmpMap; + this.mapList = WidgetRoot.getAllWidgets(); } /** @@ -75,7 +62,7 @@ class _ComponentsPageState extends State color: Colors.deepOrange, ), onPressed: () { - FluroRouter.router.navigateTo(context, '/scrollview_gridview'); + FluroRouter.router.navigateTo(context, _tmpWidgetList[index].routerName); }, ), Text(_tmpWidgetList[index].name), diff --git a/lib/page/test/test_page_one.dart b/lib/page/test/test_page_one.dart deleted file mode 100644 index 1bafde2..0000000 --- a/lib/page/test/test_page_one.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:flutter/material.dart'; - -class TestPageOne extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text('test page one'), - ), - body: Center( - child: Text('test pahe pne'), - ), - ); - } -} diff --git a/lib/page/test/test_page_two.dart b/lib/page/test/test_page_two.dart deleted file mode 100644 index baab6a2..0000000 --- a/lib/page/test/test_page_two.dart +++ /dev/null @@ -1,15 +0,0 @@ -import 'package:flutter/material.dart'; - -class TestPageTwo extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar( - title: Text('test page two'), - ), - body: Center( - child: Text('test pahe two'), - ), - ); - } -} diff --git a/lib/router/index.dart b/lib/router/index.dart index de2973a..14b6227 100644 --- a/lib/router/index.dart +++ b/lib/router/index.dart @@ -2,16 +2,14 @@ import 'package:flutter/widgets.dart'; import 'package:fluro/fluro.dart'; //首页 import 'package:efox_flutter/page/home.dart'; - -import 'package:flutter/material.dart'; +import 'package:efox_flutter/widget/index.dart' as WidgetConfig; import 'handles.dart'; -import 'scrollview/index.dart' as scrollview; class FluroRouter { static Router router; - static Router initRouter(Router router) { - FluroRouter.router = router; + static Router initRouter() { + FluroRouter.router = Router(); router.define( '/', handler: Handler( @@ -23,7 +21,18 @@ class FluroRouter { router.define('/webview', handler: webviewHandler); - scrollview.initRouter(router); + // 组件 + WidgetConfig.getAllWidgets().forEach((widgetListInfo) { + widgetListInfo.widgetList.forEach((widgetInfo) { + router.define( + widgetInfo.routerName, + handler: Handler( + handlerFunc: (BuildContext context, Map params) { + return widgetInfo.widget; + }), + ); + }); + }); return router; } } diff --git a/lib/router/scrollview/index.dart b/lib/router/scrollview/index.dart index 44a65f4..c0a18a4 100644 --- a/lib/router/scrollview/index.dart +++ b/lib/router/scrollview/index.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; -import 'package:efox_flutter/widget/scrollview/gridview/gridview.dart'; +import 'package:efox_flutter/widget/scrollview/gridview/index.dart' as GridViewDemo; import 'package:fluro/fluro.dart'; const nameSpaces = '/scrollview_'; const gridview = nameSpaces + 'gridview'; const routerMaps = { - gridview: '/widget/scrollview/gridview/gridview', + gridview: '/widget/scrollview/gridview/index', }; void initRouter(router) { @@ -14,7 +14,7 @@ void initRouter(router) { gridview, handler: Handler( handlerFunc: (BuildContext context, Map params) { - return GridViewDemo(); + return GridViewDemo.Demo(); }, ), ); diff --git a/lib/router/test/index.dart b/lib/router/test/index.dart deleted file mode 100644 index f05e746..0000000 --- a/lib/router/test/index.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:flutter/widgets.dart'; - -import 'package:efox_flutter/page/test/test_page_one.dart'; -import 'package:efox_flutter/page/test/test_page_two.dart'; - -Map getTestRoutesConfig(BuildContext context) { - return { - '/test/test_page_one': (context) => TestPageOne(), - '/test/test_page_two': (context) => TestPageTwo() - }; -} diff --git a/lib/store/objects/widget_list.dart b/lib/store/objects/widget_info.dart similarity index 68% rename from lib/store/objects/widget_list.dart rename to lib/store/objects/widget_info.dart index 086dd2d..9fc00f9 100644 --- a/lib/store/objects/widget_list.dart +++ b/lib/store/objects/widget_info.dart @@ -1,12 +1,19 @@ +import 'package:flutter/widgets.dart'; class ItemInfo extends Object { int code; String name; - String key; + String routerName; + Widget widget; + String webviewTitle; + + ItemInfo({this.code, this.name, this.routerName, this.widget, this.webviewTitle}); ItemInfo.fromJson(Map json) { code = json['code']; name = json['name']; - key = json['key']; + widget = json['widget']; + routerName = json['routerName']; + webviewTitle = json['webviewTitle']; } } @@ -15,6 +22,8 @@ class ItemListInfo { int code; List widgetList; + ItemListInfo({ this.typeName, this.code, this.widgetList}); + ItemListInfo.fromJson(Map json) { typeName = json['typeName']; code = json['code']; diff --git a/lib/widget/index.dart b/lib/widget/index.dart new file mode 100644 index 0000000..1fb9a74 --- /dev/null +++ b/lib/widget/index.dart @@ -0,0 +1,7 @@ +import 'scrollview/index.dart' as ScrollView; + +List getAllWidgets() { + List routerMap =[]; + routerMap.addAll(ScrollView.widgetMap); + return routerMap; +} \ No newline at end of file diff --git a/lib/widget/scrollview/GridView/gridview.dart b/lib/widget/scrollview/gridview/index.dart similarity index 60% rename from lib/widget/scrollview/GridView/gridview.dart rename to lib/widget/scrollview/gridview/index.dart index b70abc8..1f1c7f0 100644 --- a/lib/widget/scrollview/GridView/gridview.dart +++ b/lib/widget/scrollview/gridview/index.dart @@ -2,15 +2,22 @@ import 'package:flutter/material.dart'; import 'package:efox_flutter/components/widgetLodingComp.dart'; import 'package:efox_flutter/utils/file.dart' as FileUtils; -class GridViewDemo extends StatefulWidget { +String _mdUrl = 'docs/widget/scrollview/gridview/index.md'; + +class Demo extends StatefulWidget { + static String name = 'GridView'; + static String routerName = 'gridview'; + static String codeUrl = 'https://github.com/efoxTeam/flutter-ui/blob/master/readme.md'; + static String mdUrl = _mdUrl; + @override - _GridViewDemoState createState() => new _GridViewDemoState(); + _DemoState createState() => new _DemoState(); } -class _GridViewDemoState extends State { - static String routerName = 'scrollview_gridview'; +class _DemoState extends State { bool loading = true; - String ___MD___01 = 'docs/widget/scrollview/gridview/index.md'; + String ___MD___ = _mdUrl; + @override void initState() { super.initState(); @@ -18,9 +25,9 @@ class _GridViewDemoState extends State { } initMd() async { - String mdStr = await FileUtils.readLocaleFile(___MD___01); + String mdStr = await FileUtils.readLocaleFile(___MD___); setState(() { - this.___MD___01 = mdStr; + this.___MD___ = mdStr; loading = false; }); } @@ -28,12 +35,13 @@ class _GridViewDemoState extends State { @override Widget build(BuildContext context) { return WidgetComp( - title: 'GridViewDemo', - codeUrl: 'https://github.com/efoxTeam/flutter-ui/blob/master/readme.md', + name: Demo.name, + codeUrl: Demo.codeUrl, + mdUrl: Demo.mdUrl, loading: loading, modelChild: (context, child, model) { return [ - ___MD___01, + ___MD___, Container( color: Colors.teal.shade700, alignment: Alignment.center, diff --git a/lib/widget/scrollview/index.dart b/lib/widget/scrollview/index.dart new file mode 100644 index 0000000..84c3d14 --- /dev/null +++ b/lib/widget/scrollview/index.dart @@ -0,0 +1,21 @@ +import 'package:efox_flutter/store/objects/widget_info.dart'; +import 'gridview/index.dart' as GridView; + +const nameSpaces = '/scrollview_'; + +List widgets = [ + ItemInfo( + routerName: nameSpaces + GridView.Demo.routerName, + widget: GridView.Demo(), + code: 59673, + name: GridView.Demo.name, + ) +]; + +List widgetMap = [ + ItemListInfo( + widgetList: widgets, + typeName: 'ScrollView', + code: 58353, + ) +]; \ No newline at end of file