Skip to content

优化路由,优化组件加载方式 #4

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 20, 2019
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions docs/widget/scrollview/gridview/code.md
Original file line number Diff line number Diff line change
@@ -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<Widget> children: const [],
int semanticChildCount
})
66 changes: 46 additions & 20 deletions docs/widget/scrollview/gridview/index.md
Original file line number Diff line number Diff line change
@@ -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<Widget> children: const [],
int semanticChildCount
})
class _DemoState extends State<Demo> {
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),
),
),
];
},
);
}
}
```
6 changes: 5 additions & 1 deletion lib/components/baseComp.dart
Original file line number Diff line number Diff line change
@@ -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)
],
),
);
}
);
2 changes: 1 addition & 1 deletion lib/components/webviewComp.dart
Original file line number Diff line number Diff line change
@@ -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"),
),
);
}
24 changes: 19 additions & 5 deletions lib/components/widgetLodingComp.dart
Original file line number Diff line number Diff line change
@@ -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<Widget> _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: <Widget>[
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);
}
);
}
));
},
),
],
3 changes: 1 addition & 2 deletions lib/main.dart
Original file line number Diff line number Diff line change
@@ -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();
19 changes: 3 additions & 16 deletions lib/page/tabbar/index.dart
Original file line number Diff line number Diff line change
@@ -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<ComponentsPage>
@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<ComponentsPage>
color: Colors.deepOrange,
),
onPressed: () {
FluroRouter.router.navigateTo(context, '/scrollview_gridview');
FluroRouter.router.navigateTo(context, _tmpWidgetList[index].routerName);
},
),
Text(_tmpWidgetList[index].name),
15 changes: 0 additions & 15 deletions lib/page/test/test_page_one.dart

This file was deleted.

15 changes: 0 additions & 15 deletions lib/page/test/test_page_two.dart

This file was deleted.

21 changes: 15 additions & 6 deletions lib/router/index.dart
Original file line number Diff line number Diff line change
@@ -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<String, List> params) {
return widgetInfo.widget;
}),
);
});
});
return router;
}
}
6 changes: 3 additions & 3 deletions lib/router/scrollview/index.dart
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
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) {
router.define(
gridview,
handler: Handler(
handlerFunc: (BuildContext context, Map<String, dynamic> params) {
return GridViewDemo();
return GridViewDemo.Demo();
},
),
);
11 changes: 0 additions & 11 deletions lib/router/test/index.dart

This file was deleted.

Original file line number Diff line number Diff line change
@@ -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<String, dynamic> 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<String, dynamic> json) {
typeName = json['typeName'];
code = json['code'];
7 changes: 7 additions & 0 deletions lib/widget/index.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
import 'scrollview/index.dart' as ScrollView;

List getAllWidgets() {
List routerMap =[];
routerMap.addAll(ScrollView.widgetMap);
return routerMap;
}
Original file line number Diff line number Diff line change
@@ -2,38 +2,46 @@ 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<GridViewDemo> {
static String routerName = 'scrollview_gridview';
class _DemoState extends State<Demo> {
bool loading = true;
String ___MD___01 = 'docs/widget/scrollview/gridview/index.md';
String ___MD___ = _mdUrl;

@override
void initState() {
super.initState();
this.initMd();
}

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;
});
}

@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,
21 changes: 21 additions & 0 deletions lib/widget/scrollview/index.dart
Original file line number Diff line number Diff line change
@@ -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,
)
];