Skip to content

Test #6

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 7 commits into from
Feb 21, 2019
Merged
Show file tree
Hide file tree
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
2 changes: 1 addition & 1 deletion assets/json/widget_list.json
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@
{
"code": 59673,
"name": "GridView",
"key": "scrollview_gridview"
"key": "/scrollview_gridview"
}
]
}
Expand Down
40 changes: 40 additions & 0 deletions docs/widget/scrollview/gridview/code.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
```
import 'package:flutter/material.dart';
class Example extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Gridview'),
),
body: GridView.count(
crossAxisCount: 3,
reverse: false,
scrollDirection: Axis.vertical,
controller: ScrollController(
initialScrollOffset: 0.0,
),
crossAxisSpacing: 10.0,
mainAxisSpacing: 20.0,
childAspectRatio: 2,
physics: BouncingScrollPhysics(),
primary: false,
children: List.generate(25, (index) {
return Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.redAccent,
),
),
child: Center(
child: Text('Item $index',
style: Theme.of(context).textTheme.headline),
),
);
}, growable: false),
),
);
}
}

```
80 changes: 80 additions & 0 deletions docs/widget/scrollview/gridview/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
## ***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
})
```
### 进阶用法
```
GridView.builder // 动态加载,用于分页较多
GridView.count // 指定数据加载
GridView.custom
GridView.extent
```

### 用例
* GridView.count
>
crossAxisCount:必填,指定列数
children: 子组件
reverse:默认false, 当为true时反转滚动方向,即上到下反转成下到上,左到右反转成右到左
controller: ScrollController类,能初始化滚动相关的属性,如位置,也能监听滚动变化
primary: 默认true, 当填充数量调试不足以产生滚动条,滚动组件时,不影响最外层滚动条,即界面不随着手势滚动。
primary: false, 且controller=null(或者ScrollContorller中的initialScrollOffset属性为0),GridView.count的数量较少不足产生滚动条时,滚动主体为最外层滚动条。
physics: ScrollPhysics类,影响视图与用户输入交互。
shrinkWrap: 默认false, 滚动视图内容展开和收缩时不重新计算视图大小,例如外层height=200, 滚动的内容可能增加了expendTile,展开后的内容超过了200高,这时候会报错,此时修改shrinkWrap=true,即滚动视图会重新计算。
scrollDirection:默认Axis.vertical.,垂直方向,可通过Axis.horizontal修改为水平方向。
mainAxisSpacing: 主轴方向间距, 主轴方向由scrollDirection确定
crossAxisSpacing: 副轴方向间距,
childAspectRatio: 子元素中宽高比,宽度由ViewPort/crossAxisCount确定

```
GridView.count(
crossAxisCount: 3,
reverse: false,
scrollDirection: Axis.vertical,
controller: ScrollController(
initialScrollOffset: 0.0,
),
crossAxisSpacing: 10.0,
mainAxisSpacing: 20.0,
childAspectRatio: 2,
physics: BouncingScrollPhysics(),
primary: false,
children: List.generate(15, (index) {
return Container(
decoration: BoxDecoration(
border: Border.all(
color: Colors.redAccent,
),
),
child: Center(
child: Text('Item $index',
style: Theme.of(context).textTheme.headline),
),
);
}, growable: false),
),
);
```

>ScrollPhysics类:
* BouncingScrollPhysics,ClampingScrollPhysics,AlwaysScrollableScrollPhysics,NeverScrollableScrollPhysics
6 changes: 5 additions & 1 deletion lib/components/baseComp.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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)
],
),
);
}
);
Expand Down
22 changes: 22 additions & 0 deletions lib/components/exampleComp.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import 'package:flutter/material.dart';

class ExampleComp extends StatelessWidget {
final Widget child;

ExampleComp({Key key, this.child}):super(key: key);

@override
Widget build(BuildContext context) {
return Container(
height: 420.0,
margin: EdgeInsets.fromLTRB(50, 40, 50, 40),
decoration: BoxDecoration(
border: Border.all(
color: Colors.deepOrange,
width: 1.0
),
),
child: this.child,
);
}
}
32 changes: 32 additions & 0 deletions lib/components/webviewComp.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';

class WebViewComp extends StatelessWidget {
final String url;
final String title;
WebViewComp({Key key, @required this.url, this.title}) : super(key: key);

void controller() {
final flutterWebviewPlugin = new FlutterWebviewPlugin();
flutterWebviewPlugin.onUrlChanged.listen((String url) {
print('url ${url}');
});
}
@override
Widget build(BuildContext context) {
return WebviewScaffold(
url: this.url,
appBar: new AppBar(
title: new Text("Webview"),
),
withZoom: true,
withLocalStorage: true,
hidden: true,
// initialChild: Container(
// child: const Center(
// child: CircularProgressIndicator(),
// ),
// ),
);
}
}
41 changes: 32 additions & 9 deletions lib/components/widgetComp.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,37 @@ import 'package:flutter/material.dart';
import 'package:efox_flutter/store/STORE.dart';
import 'package:efox_flutter/components/markdownComp.dart';

class WidgetComp extends StatelessWidget {
class WidgetComp extends StatefulWidget {
final dynamic modelChild;
final String title;

WidgetComp({Key key, this.title, @required this.modelChild})
: super(key: key);
WidgetComp({
Key key,
this.title,
@required this.modelChild,
}) : super(key: key);

@override
_WidgetCompState createState() => _WidgetCompState(
title: this.title,
modelChild: this.modelChild,
);
}

class _WidgetCompState extends State<WidgetComp> {
List<Widget> _bodyList = [];
final dynamic modelChild;
final String title;

_WidgetCompState({
this.title,
@required this.modelChild,
});

@override
Widget build(BuildContext context) {
return STORE.connect(builder: (context, child, model) {
List _list = this.modelChild(context, child, model);
List<Widget> _bodyList = [];
_list.forEach((item) {
if (item.runtimeType == String) {
_bodyList.add(MarkDownComp(item));
Expand All @@ -25,12 +44,16 @@ class WidgetComp extends StatelessWidget {
appBar: AppBar(
title: Text(this.title),
),
body: ListView(
padding: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 20.0),
shrinkWrap: true,
children: _bodyList,
),
body: this.renderWidget(),
);
});
}

Widget renderWidget() {
return ListView(
padding: EdgeInsets.fromLTRB(10.0, 20.0, 10.0, 20.0),
shrinkWrap: true,
children: this._bodyList,
);
}
}
Loading