mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-05-21 23:06:33 +08:00
Merge branch 'develop' into dev/yisheng
# Conflicts: # lib/widgets/components/Bar/AppBar/index.dart # lib/widgets/components/Bar/BottomAppBar/demo.dart # lib/widgets/components/Bar/BottomAppBar/index.dart # lib/widgets/components/Bar/ButtonBar/index.dart # lib/widgets/components/Bar/FlexibleSpaceBar/index.dart # lib/widgets/components/Bar/SliverAppBar/index.dart # lib/widgets/components/Bar/SnackBar/index.dart # lib/widgets/components/Bar/SnackBarAction/index.dart # lib/widgets/components/Card/Card/index.dart # lib/widgets/components/LIst/ListBody/index.dart # lib/widgets/components/LIst/ListView/index.dart # lib/widgets/elements/Form/Button/DropdownButton/index.dart # lib/widgets/elements/Form/Button/FlatButton/index.dart # lib/widgets/elements/Form/Button/PopupMenuButton/index.dart # lib/widgets/elements/Form/CheckBox/Checkbox/index.dart # lib/widgets/elements/Form/CheckBox/CheckboxListTile/index.dart # lib/widgets/elements/Frame/Axis/crossAxis/index.dart # lib/widgets/elements/Frame/Axis/flipAxis/index.dart # lib/widgets/elements/Frame/Axis/mainAxis/index.dart # lib/widgets/elements/Media/Image/precacheImage/index.dart
This commit is contained in:
@ -5,7 +5,7 @@ buildscript {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.1.2'
|
classpath 'com.android.tools.build:gradle:3.2.0'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
#Fri Jun 23 08:50:38 CEST 2017
|
#Thu Jan 10 15:37:36 CST 2019
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-4.6-all.zip
|
||||||
|
BIN
assets/images/nothing.png
Normal file
BIN
assets/images/nothing.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 64 KiB |
@ -6,7 +6,6 @@
|
|||||||
* email: zhu.yan@alibaba-inc.com
|
* email: zhu.yan@alibaba-inc.com
|
||||||
* tartget: FlatButton 的示例
|
* tartget: FlatButton 的示例
|
||||||
*/
|
*/
|
||||||
import 'package:fluro/fluro.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
||||||
|
53
lib/common/list_view_item.dart
Normal file
53
lib/common/list_view_item.dart
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
|
class ListViewItem extends StatelessWidget {
|
||||||
|
final String itemUrl;
|
||||||
|
final String itemTitle;
|
||||||
|
final String data;
|
||||||
|
|
||||||
|
const ListViewItem({Key key, this.itemUrl, this.itemTitle, this.data})
|
||||||
|
: super(key: key);
|
||||||
|
|
||||||
|
void _launchURL(String url, BuildContext context) async {
|
||||||
|
|
||||||
|
if (await canLaunch(url)) {
|
||||||
|
await launch(url);
|
||||||
|
} else {
|
||||||
|
throw 'Could not launch $url';
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
return Card(
|
||||||
|
color: Colors.white,
|
||||||
|
elevation: 4.0,
|
||||||
|
margin: new EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0),
|
||||||
|
child: ListTile(
|
||||||
|
onTap: () {
|
||||||
|
_launchURL(itemUrl, context);
|
||||||
|
},
|
||||||
|
title: Padding(
|
||||||
|
child: Text(
|
||||||
|
itemTitle,
|
||||||
|
style: TextStyle(color: Colors.black, fontSize: 15.0),
|
||||||
|
),
|
||||||
|
padding: EdgeInsets.only(top: 10.0),
|
||||||
|
),
|
||||||
|
subtitle: Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Padding(
|
||||||
|
child: Text(data,
|
||||||
|
style: TextStyle(color: Colors.black54, fontSize: 10.0)),
|
||||||
|
padding: EdgeInsets.only(top: 10.0, bottom: 10.0),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
),
|
||||||
|
trailing:
|
||||||
|
Icon(Icons.keyboard_arrow_right, color: Colors.grey, size: 30.0),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@ -1,55 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
|
||||||
|
|
||||||
class ListViewItem extends StatelessWidget {
|
|
||||||
final String itemUrl;
|
|
||||||
final String itemTitle;
|
|
||||||
final String data;
|
|
||||||
|
|
||||||
const ListViewItem({Key key, this.itemUrl, this.itemTitle, this.data})
|
|
||||||
: super(key: key);
|
|
||||||
|
|
||||||
|
|
||||||
void _launchURL(String url,BuildContext context) async {
|
|
||||||
if (url.contains("https") || url.contains("http")) {
|
|
||||||
if (await canLaunch(url)) {
|
|
||||||
await launch(url);
|
|
||||||
} else {
|
|
||||||
throw 'Could not launch $url';
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
Navigator.of(context).pushNamed(url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return Card(
|
|
||||||
color: Colors.white,
|
|
||||||
elevation: 4.0,
|
|
||||||
margin: new EdgeInsets.symmetric(horizontal: 10.0, vertical: 6.0),
|
|
||||||
child: ListTile(
|
|
||||||
onTap: () {
|
|
||||||
_launchURL(itemUrl,context);
|
|
||||||
},
|
|
||||||
title: Padding(
|
|
||||||
child: Text(
|
|
||||||
itemTitle,
|
|
||||||
style: TextStyle(color: Colors.black, fontSize: 15.0),
|
|
||||||
),
|
|
||||||
padding: EdgeInsets.only(top: 10.0),
|
|
||||||
),
|
|
||||||
subtitle: Row(
|
|
||||||
children: <Widget>[
|
|
||||||
Padding(
|
|
||||||
child: Text(data,
|
|
||||||
style: TextStyle(color: Colors.black54, fontSize: 10.0)),
|
|
||||||
padding: EdgeInsets.only(top: 10.0, bottom: 10.0),
|
|
||||||
)
|
|
||||||
],
|
|
||||||
),
|
|
||||||
trailing: Icon(Icons.keyboard_arrow_right,
|
|
||||||
color: Colors.grey, size: 30.0)));
|
|
||||||
}
|
|
||||||
}
|
|
@ -14,18 +14,21 @@ class Provider {
|
|||||||
//Get a location using getDatabasesPath
|
//Get a location using getDatabasesPath
|
||||||
String databasesPath = await getDatabasesPath();
|
String databasesPath = await getDatabasesPath();
|
||||||
String path = join(databasesPath, 'flutter.db');
|
String path = join(databasesPath, 'flutter.db');
|
||||||
List<Map> list;
|
List<Map> tables;
|
||||||
// try {
|
try {
|
||||||
// db = await openDatabase(path, readOnly: true);
|
db = await openDatabase(path);
|
||||||
|
tables = await db
|
||||||
|
.rawQuery('SELECT name FROM sqlite_master WHERE type = "table"');
|
||||||
|
print('${tables.length} 7891');
|
||||||
|
} catch (e) {
|
||||||
|
print("Error $e");
|
||||||
|
}
|
||||||
|
|
||||||
// } catch (e) {
|
if (tables.length < 3) {
|
||||||
// print("Error $e");
|
|
||||||
// }
|
|
||||||
|
|
||||||
if (db == null) {
|
|
||||||
// Delete the database
|
// Delete the database
|
||||||
await deleteDatabase(path);
|
await deleteDatabase(path);
|
||||||
|
// 关闭上面打开的db,否则无法执行open
|
||||||
|
db.close();
|
||||||
ByteData data = await rootBundle.load(join("assets", "app.db"));
|
ByteData data = await rootBundle.load(join("assets", "app.db"));
|
||||||
List<int> bytes =
|
List<int> bytes =
|
||||||
data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
|
data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
|
||||||
|
@ -69,7 +69,7 @@ class Sql extends BaseModel {
|
|||||||
/// @mods [And, Or] default is Or
|
/// @mods [And, Or] default is Or
|
||||||
/// search({'name': "hanxu', 'id': 1};
|
/// search({'name': "hanxu', 'id': 1};
|
||||||
///
|
///
|
||||||
Future<List> search({Map<String, dynamic> conditions, String Mods = 'Or'}) async {
|
Future<List> search({Map<String, dynamic> conditions, String mods = 'Or'}) async {
|
||||||
if (conditions == null || conditions.isEmpty) {
|
if (conditions == null || conditions.isEmpty) {
|
||||||
return this.get();
|
return this.get();
|
||||||
}
|
}
|
||||||
@ -88,7 +88,7 @@ class Sql extends BaseModel {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (index >= 0 && index < conditions.length -1) {
|
if (index >= 0 && index < conditions.length -1) {
|
||||||
stringConditions = '$stringConditions $Mods';
|
stringConditions = '$stringConditions $mods';
|
||||||
}
|
}
|
||||||
index++;
|
index++;
|
||||||
});
|
});
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import '../routers/application.dart';
|
|
||||||
|
|
||||||
class WidgetDemo extends StatelessWidget {
|
class WidgetDemo extends StatelessWidget {
|
||||||
final Widget child;
|
final Widget child;
|
||||||
|
@ -10,6 +10,8 @@ import '../components/markdown.dart';
|
|||||||
import '../model/collection.dart';
|
import '../model/collection.dart';
|
||||||
import '../widgets/index.dart';
|
import '../widgets/index.dart';
|
||||||
import 'package:fluttertoast/fluttertoast.dart';
|
import 'package:fluttertoast/fluttertoast.dart';
|
||||||
|
import '../event/event-bus.dart';
|
||||||
|
import '../event/event-model.dart';
|
||||||
|
|
||||||
class WidgetDemo extends StatefulWidget {
|
class WidgetDemo extends StatefulWidget {
|
||||||
final List<dynamic> contentList;
|
final List<dynamic> contentList;
|
||||||
@ -34,7 +36,6 @@ class WidgetDemo extends StatefulWidget {
|
|||||||
class _WidgetDemoState extends State<WidgetDemo> {
|
class _WidgetDemoState extends State<WidgetDemo> {
|
||||||
bool _hasCollected = false;
|
bool _hasCollected = false;
|
||||||
CollectionControlModel _collectionControl = new CollectionControlModel();
|
CollectionControlModel _collectionControl = new CollectionControlModel();
|
||||||
Collection _collection;
|
|
||||||
Color _collectionColor;
|
Color _collectionColor;
|
||||||
List widgetDemosList = new WidgetDemoList().getDemos();
|
List widgetDemosList = new WidgetDemoList().getDemos();
|
||||||
String _router = '';
|
String _router = '';
|
||||||
@ -87,9 +88,11 @@ class _WidgetDemoState extends State<WidgetDemo> {
|
|||||||
_router = item.routerName;
|
_router = item.routerName;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
setState(() {
|
if (this.mounted) {
|
||||||
_hasCollected = list.length > 0;
|
setState(() {
|
||||||
});
|
_hasCollected = list.length > 0;
|
||||||
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -103,6 +106,11 @@ class _WidgetDemoState extends State<WidgetDemo> {
|
|||||||
_hasCollected = false;
|
_hasCollected = false;
|
||||||
});
|
});
|
||||||
showInSnackBar('已取消收藏');
|
showInSnackBar('已取消收藏');
|
||||||
|
|
||||||
|
if (ApplicationEvent.event != null) {
|
||||||
|
ApplicationEvent.event
|
||||||
|
.fire(CollectionEvent(widget.title, _router, true));
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
print('删除错误');
|
print('删除错误');
|
||||||
@ -116,12 +124,19 @@ class _WidgetDemoState extends State<WidgetDemo> {
|
|||||||
setState(() {
|
setState(() {
|
||||||
_hasCollected = true;
|
_hasCollected = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (ApplicationEvent.event != null) {
|
||||||
|
ApplicationEvent.event
|
||||||
|
.fire(CollectionEvent(widget.title, _router, false));
|
||||||
|
}
|
||||||
|
|
||||||
showInSnackBar('收藏成功');
|
showInSnackBar('收藏成功');
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
if (_hasCollected) {
|
if (_hasCollected) {
|
||||||
@ -170,6 +185,7 @@ class _WidgetDemoState extends State<WidgetDemo> {
|
|||||||
),
|
),
|
||||||
floatingActionButton: FloatingActionButton(
|
floatingActionButton: FloatingActionButton(
|
||||||
onPressed: _getCollection,
|
onPressed: _getCollection,
|
||||||
|
mini: true,
|
||||||
tooltip: '收藏',
|
tooltip: '收藏',
|
||||||
child: Icon(
|
child: Icon(
|
||||||
Icons.star,
|
Icons.star,
|
||||||
|
@ -1,10 +1,11 @@
|
|||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_rookie_book/views/Detail.dart';
|
import 'package:flutter_rookie_book/views/Detail.dart';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class CompList extends StatefulWidget {
|
class CompList extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() {
|
State<StatefulWidget> createState() {
|
||||||
// TODO: implement createState
|
|
||||||
return new ListState();
|
return new ListState();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,12 @@
|
|||||||
* tartget: FlatButton 的示例
|
* tartget: FlatButton 的示例
|
||||||
*/
|
*/
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'dart:math';
|
|
||||||
|
|
||||||
|
|
||||||
class ListRefresh extends StatefulWidget {
|
class ListRefresh extends StatefulWidget {
|
||||||
final renderItem;
|
final renderItem;
|
||||||
final requestApi;
|
final requestApi;
|
||||||
|
|
||||||
const ListRefresh([this.requestApi,this.renderItem]) : super();
|
const ListRefresh([this.requestApi, this.renderItem]) : super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() => listRefresh();
|
State<StatefulWidget> createState() => listRefresh();
|
||||||
@ -34,7 +32,8 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
_getMoreData();
|
_getMoreData();
|
||||||
_scrollController.addListener(() {
|
_scrollController.addListener(() {
|
||||||
// 如果下拉的当前位置到scroll的最下面
|
// 如果下拉的当前位置到scroll的最下面
|
||||||
if (_scrollController.position.pixels == _scrollController.position.maxScrollExtent) {
|
if (_scrollController.position.pixels ==
|
||||||
|
_scrollController.position.maxScrollExtent) {
|
||||||
_getMoreData();
|
_getMoreData();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -43,7 +42,7 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
/*
|
/*
|
||||||
* 回弹效果
|
* 回弹效果
|
||||||
* */
|
* */
|
||||||
backElasticEffect(){
|
backElasticEffect() {
|
||||||
// double edge = 50.0;
|
// double edge = 50.0;
|
||||||
// double offsetFromBottom = _scrollController.position.maxScrollExtent - _scrollController.position.pixels;
|
// double offsetFromBottom = _scrollController.position.maxScrollExtent - _scrollController.position.pixels;
|
||||||
// if (offsetFromBottom < edge) { // 添加一个动画没有更多数据的时候 ListView 向下移动覆盖正在加载更多数据的标志
|
// if (offsetFromBottom < edge) { // 添加一个动画没有更多数据的时候 ListView 向下移动覆盖正在加载更多数据的标志
|
||||||
@ -58,18 +57,22 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
* list探底,执行的具体事件
|
* list探底,执行的具体事件
|
||||||
* */
|
* */
|
||||||
Future _getMoreData() async {
|
Future _getMoreData() async {
|
||||||
if (!isLoading && _hasMore) { // 如果上一次异步请求数据完成 同时有数据可以加载
|
if (!isLoading && _hasMore) {
|
||||||
|
// 如果上一次异步请求数据完成 同时有数据可以加载
|
||||||
setState(() => isLoading = true);
|
setState(() => isLoading = true);
|
||||||
//if(_hasMore){ // 还有数据可以拉新
|
//if(_hasMore){ // 还有数据可以拉新
|
||||||
List newEntries = await mokeHttpRequest();
|
List newEntries = await mokeHttpRequest();
|
||||||
//if (newEntries.isEmpty) {
|
//if (newEntries.isEmpty) {
|
||||||
_hasMore = (_pageIndex <= _pageTotal);
|
_hasMore = (_pageIndex <= _pageTotal);
|
||||||
setState(() {
|
if (this.mounted) {
|
||||||
items.addAll(newEntries);
|
setState(() {
|
||||||
isLoading = false;
|
items.addAll(newEntries);
|
||||||
});
|
isLoading = false;
|
||||||
|
});
|
||||||
|
}
|
||||||
backElasticEffect();
|
backElasticEffect();
|
||||||
}else if (!isLoading && !_hasMore){ // 这样判断,减少以后的绘制
|
} else if (!isLoading && !_hasMore) {
|
||||||
|
// 这样判断,减少以后的绘制
|
||||||
_pageIndex = 0;
|
_pageIndex = 0;
|
||||||
backElasticEffect();
|
backElasticEffect();
|
||||||
}
|
}
|
||||||
@ -79,12 +82,12 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
* 伪装吐出新数据
|
* 伪装吐出新数据
|
||||||
* */
|
* */
|
||||||
Future<List> mokeHttpRequest() async {
|
Future<List> mokeHttpRequest() async {
|
||||||
if(widget.requestApi is Function){
|
if (widget.requestApi is Function) {
|
||||||
final listObj = await widget.requestApi({'pageIndex':_pageIndex});
|
final listObj = await widget.requestApi({'pageIndex': _pageIndex});
|
||||||
_pageIndex = listObj['pageIndex'];
|
_pageIndex = listObj['pageIndex'];
|
||||||
_pageTotal = listObj['total'];
|
_pageTotal = listObj['total'];
|
||||||
return listObj['list'];
|
return listObj['list'];
|
||||||
}else {
|
} else {
|
||||||
return Future.delayed(Duration(seconds: 2), () {
|
return Future.delayed(Duration(seconds: 2), () {
|
||||||
return [];
|
return [];
|
||||||
});
|
});
|
||||||
@ -97,20 +100,23 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
* */
|
* */
|
||||||
Future<Null> _handleRefresh() async {
|
Future<Null> _handleRefresh() async {
|
||||||
List newEntries = await mokeHttpRequest();
|
List newEntries = await mokeHttpRequest();
|
||||||
setState(() {
|
if (this.mounted) {
|
||||||
items.clear();
|
setState(() {
|
||||||
items.addAll(newEntries);
|
items.clear();
|
||||||
isLoading = false;
|
items.addAll(newEntries);
|
||||||
_hasMore = true;
|
isLoading = false;
|
||||||
return null;
|
_hasMore = true;
|
||||||
});
|
return null;
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 加载中的提示
|
* 加载中的提示
|
||||||
* */
|
* */
|
||||||
Widget _buildLoadText() {
|
Widget _buildLoadText() {
|
||||||
return Container(child: Padding(
|
return Container(
|
||||||
|
child: Padding(
|
||||||
padding: const EdgeInsets.all(18.0),
|
padding: const EdgeInsets.all(18.0),
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text("数据没有更多了!!!"),
|
child: Text("数据没有更多了!!!"),
|
||||||
@ -122,23 +128,28 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
* 上提加载loading的widget,如果数据到达极限,显示没有更多
|
* 上提加载loading的widget,如果数据到达极限,显示没有更多
|
||||||
* */
|
* */
|
||||||
Widget _buildProgressIndicator() {
|
Widget _buildProgressIndicator() {
|
||||||
if(_hasMore){
|
if (_hasMore) {
|
||||||
return new Padding(
|
return new Padding(
|
||||||
padding: const EdgeInsets.all(8.0),
|
padding: const EdgeInsets.all(8.0),
|
||||||
child: new Center(
|
child: new Center(
|
||||||
child:Column(
|
child: Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
new Opacity(
|
new Opacity(
|
||||||
opacity: isLoading ? 1.0 : 0.0,
|
opacity: isLoading ? 1.0 : 0.0,
|
||||||
child: new CircularProgressIndicator(valueColor: AlwaysStoppedAnimation(Colors.blue)),
|
child: new CircularProgressIndicator(
|
||||||
),
|
valueColor: AlwaysStoppedAnimation(Colors.blue)),
|
||||||
SizedBox(height:20.0),
|
),
|
||||||
Text('稍等片刻更精彩...',style: TextStyle(fontSize: 14.0),)
|
SizedBox(height: 20.0),
|
||||||
],)
|
Text(
|
||||||
//child:
|
'稍等片刻更精彩...',
|
||||||
),
|
style: TextStyle(fontSize: 14.0),
|
||||||
|
)
|
||||||
|
],
|
||||||
|
)
|
||||||
|
//child:
|
||||||
|
),
|
||||||
);
|
);
|
||||||
}else {
|
} else {
|
||||||
return _buildLoadText();
|
return _buildLoadText();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -152,11 +163,11 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return new RefreshIndicator(
|
return new RefreshIndicator(
|
||||||
child:ListView.builder(
|
child: ListView.builder(
|
||||||
itemCount: items.length + 1,
|
itemCount: items.length + 1,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
if(index == 0 && index != items.length){
|
if (index == 0 && index != items.length) {
|
||||||
return Container(height:0);
|
return Container(height: 0);
|
||||||
}
|
}
|
||||||
if (index == items.length) {
|
if (index == items.length) {
|
||||||
//return _buildLoadText();
|
//return _buildLoadText();
|
||||||
@ -165,7 +176,7 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
//print('itemsitemsitemsitems:${items[index].title}');
|
//print('itemsitemsitemsitems:${items[index].title}');
|
||||||
//return ListTile(title: Text("Index${index}:${items[index].title}"));
|
//return ListTile(title: Text("Index${index}:${items[index].title}"));
|
||||||
if (widget.renderItem is Function) {
|
if (widget.renderItem is Function) {
|
||||||
return widget.renderItem(index,items[index]);
|
return widget.renderItem(index, items[index]);
|
||||||
}
|
}
|
||||||
//return makeCard(index,items[index]);
|
//return makeCard(index,items[index]);
|
||||||
}
|
}
|
||||||
@ -175,4 +186,4 @@ class listRefresh extends State<ListRefresh> {
|
|||||||
onRefresh: _handleRefresh,
|
onRefresh: _handleRefresh,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ import '../model/story.dart';
|
|||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
|
|
||||||
class Pagination extends StatelessWidget {
|
class Pagination extends StatelessWidget {
|
||||||
static const String routeName = '/material/page-selector';
|
static final String routeName = '/material/page-selector';
|
||||||
static final List<Icon> icons = <Icon>[
|
static final List<Icon> icons = <Icon>[
|
||||||
const Icon(Icons.event, semanticLabel: 'Event'),
|
const Icon(Icons.event, semanticLabel: 'Event'),
|
||||||
const Icon(Icons.home, semanticLabel: 'Home'),
|
const Icon(Icons.home, semanticLabel: 'Home'),
|
||||||
@ -18,9 +18,9 @@ class Pagination extends StatelessWidget {
|
|||||||
const Icon(Icons.language, semanticLabel: 'Language'),
|
const Icon(Icons.language, semanticLabel: 'Language'),
|
||||||
];
|
];
|
||||||
|
|
||||||
List<StoryModel> bannerStories = [];
|
final List<StoryModel> bannerStories = [];
|
||||||
|
|
||||||
List<dynamic> arr = [
|
final List<dynamic> arr = [
|
||||||
{'image': 'https://img.alicdn.com/tfs/TB1W4hMAwHqK1RjSZJnXXbNLpXa-519-260.jpg', 'type': 0, 'id': 9695909, 'url': 'https://www.zhihu.com/question/294145797/answer/551162834', 'title': '为什么阿里巴巴、腾讯和 Google 之类的企业都在使用 Flutter 开发 App?'},
|
{'image': 'https://img.alicdn.com/tfs/TB1W4hMAwHqK1RjSZJnXXbNLpXa-519-260.jpg', 'type': 0, 'id': 9695909, 'url': 'https://www.zhihu.com/question/294145797/answer/551162834', 'title': '为什么阿里巴巴、腾讯和 Google 之类的企业都在使用 Flutter 开发 App?'},
|
||||||
{'image': 'https://img.alicdn.com/tfs/TB1XmFIApzqK1RjSZSgXXcpAVXa-720-338.jpg', 'type': 0, 'id': 9695859, 'url': 'https://zhuanlan.zhihu.com/p/51696594', 'title': 'Flutter 1.0 正式发布: Google 的便携 UI 工具包'},
|
{'image': 'https://img.alicdn.com/tfs/TB1XmFIApzqK1RjSZSgXXcpAVXa-720-338.jpg', 'type': 0, 'id': 9695859, 'url': 'https://zhuanlan.zhihu.com/p/51696594', 'title': 'Flutter 1.0 正式发布: Google 的便携 UI 工具包'},
|
||||||
{'image': 'https://img.alicdn.com/tfs/TB1mClCABLoK1RjSZFuXXXn0XXa-600-362.jpg', 'type': 0, 'id': 96956491409, 'url':'https://zhuanlan.zhihu.com/p/53497167','title': 'Flutter 示范应用现已开源 — 万物起源(The History of Everything)'},
|
{'image': 'https://img.alicdn.com/tfs/TB1mClCABLoK1RjSZFuXXXn0XXa-600-362.jpg', 'type': 0, 'id': 96956491409, 'url':'https://zhuanlan.zhihu.com/p/53497167','title': 'Flutter 示范应用现已开源 — 万物起源(The History of Everything)'},
|
||||||
@ -35,7 +35,7 @@ class Pagination extends StatelessWidget {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Widget> _PageSelector(BuildContext context) {
|
List<Widget> _pageSelector(BuildContext context) {
|
||||||
List<Widget> list = [];
|
List<Widget> list = [];
|
||||||
/// super.initState();
|
/// super.initState();
|
||||||
arr.forEach((item) {
|
arr.forEach((item) {
|
||||||
@ -57,7 +57,7 @@ class Pagination extends StatelessWidget {
|
|||||||
Column(
|
Column(
|
||||||
//physics: AlwaysScrollableScrollPhysics(),
|
//physics: AlwaysScrollableScrollPhysics(),
|
||||||
//padding: EdgeInsets.only(),
|
//padding: EdgeInsets.only(),
|
||||||
children: _PageSelector(context)
|
children: _pageSelector(context)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -138,7 +138,6 @@ class _MaterialSearchState<T> extends State<MaterialSearch> {
|
|||||||
_loading = true;
|
_loading = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
//TODO: debounce widget.results too
|
|
||||||
var results = await widget.getResults(_criteria);
|
var results = await widget.getResults(_criteria);
|
||||||
|
|
||||||
if (!mounted) {
|
if (!mounted) {
|
||||||
|
@ -8,7 +8,6 @@ final hightlighter = new HighLight();
|
|||||||
class HighLight extends md.SyntaxHighlighter {
|
class HighLight extends md.SyntaxHighlighter {
|
||||||
@override
|
@override
|
||||||
TextSpan format(String source) {
|
TextSpan format(String source) {
|
||||||
// TODO: implement format
|
|
||||||
final SyntaxHighlighterStyle style = SyntaxHighlighterStyle.lightThemeStyle();
|
final SyntaxHighlighterStyle style = SyntaxHighlighterStyle.lightThemeStyle();
|
||||||
return TextSpan(
|
return TextSpan(
|
||||||
style: const TextStyle(fontSize: 10.0),
|
style: const TextStyle(fontSize: 10.0),
|
||||||
@ -22,11 +21,10 @@ class HighLight extends md.SyntaxHighlighter {
|
|||||||
|
|
||||||
|
|
||||||
class MarkdownBody extends StatelessWidget {
|
class MarkdownBody extends StatelessWidget {
|
||||||
String data;
|
final String data;
|
||||||
MarkdownBody(this.data);
|
MarkdownBody(this.data);
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
// TODO: implement build
|
|
||||||
return md.MarkdownBody(data: data, syntaxHighlighter: new HighLight());
|
return md.MarkdownBody(data: data, syntaxHighlighter: new HighLight());
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -72,16 +72,16 @@ class WidgetItem extends StatelessWidget {
|
|||||||
padding: const EdgeInsets.symmetric(vertical: 30.0, horizontal: 10.0),
|
padding: const EdgeInsets.symmetric(vertical: 30.0, horizontal: 10.0),
|
||||||
height: 150.0,
|
height: 150.0,
|
||||||
child: Column(
|
child: Column(
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
widgetIcon,
|
widgetIcon,
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 8.0,
|
height: 8.0,
|
||||||
),
|
),
|
||||||
Text(_widgetName),
|
Text(_widgetName),
|
||||||
],
|
],
|
||||||
) ,
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -8,7 +8,7 @@ class WidgetItemContainer extends StatelessWidget {
|
|||||||
final List<dynamic> categories;
|
final List<dynamic> categories;
|
||||||
final bool isWidgetPoint;
|
final bool isWidgetPoint;
|
||||||
// 所有的可用demos;
|
// 所有的可用demos;
|
||||||
List widgetDemosList = new WidgetDemoList().getDemos();
|
final List widgetDemosList = new WidgetDemoList().getDemos();
|
||||||
|
|
||||||
WidgetItemContainer(
|
WidgetItemContainer(
|
||||||
{Key key,
|
{Key key,
|
||||||
@ -41,7 +41,7 @@ class WidgetItemContainer extends StatelessWidget {
|
|||||||
targetRouter = item.routerName;
|
targetRouter = item.routerName;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Application.router.navigateTo(context, "${targetRouter}");
|
Application.router.navigateTo(context, "$targetRouter");
|
||||||
} else {
|
} else {
|
||||||
Application.router
|
Application.router
|
||||||
.navigateTo(context, "/category/${item.name}");
|
.navigateTo(context, "/category/${item.name}");
|
||||||
|
5
lib/event/event-bus.dart
Normal file
5
lib/event/event-bus.dart
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
import 'package:event_bus/event_bus.dart';
|
||||||
|
|
||||||
|
class ApplicationEvent{
|
||||||
|
static EventBus event;
|
||||||
|
}
|
7
lib/event/event-model.dart
Normal file
7
lib/event/event-model.dart
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
class CollectionEvent{
|
||||||
|
final String widgetName;
|
||||||
|
final String router;
|
||||||
|
final bool isRemove;
|
||||||
|
// token uid...
|
||||||
|
CollectionEvent(this.widgetName,this.router,this.isRemove);
|
||||||
|
}
|
@ -4,7 +4,6 @@ import 'package:flutter/rendering.dart';
|
|||||||
|
|
||||||
import 'views/FirstPage.dart';
|
import 'views/FirstPage.dart';
|
||||||
import 'views/widgetPage.dart';
|
import 'views/widgetPage.dart';
|
||||||
import 'views/ThirdPage.dart';
|
|
||||||
import 'views/FourthPage.dart';
|
import 'views/FourthPage.dart';
|
||||||
import 'views/collection_page.dart';
|
import 'views/collection_page.dart';
|
||||||
import 'routers/routers.dart';
|
import 'routers/routers.dart';
|
||||||
@ -14,6 +13,8 @@ import 'model/widget.dart';
|
|||||||
import './widgets/index.dart';
|
import './widgets/index.dart';
|
||||||
import 'package:flutter_rookie_book/components/SearchInput.dart';
|
import 'package:flutter_rookie_book/components/SearchInput.dart';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const int ThemeColor = 0xFFC91B3A;
|
const int ThemeColor = 0xFFC91B3A;
|
||||||
|
|
||||||
class MyApp extends StatelessWidget {
|
class MyApp extends StatelessWidget {
|
||||||
@ -81,7 +82,6 @@ class _MyHomePageState extends State<MyHomePage>
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
// TODO: implement initState
|
|
||||||
super.initState();
|
super.initState();
|
||||||
controller = new TabController(
|
controller = new TabController(
|
||||||
initialIndex: 0, vsync: this, length: 4); // 这里的length 决定有多少个底导 submenus
|
initialIndex: 0, vsync: this, length: 4); // 这里的length 决定有多少个底导 submenus
|
||||||
@ -111,7 +111,7 @@ class _MyHomePageState extends State<MyHomePage>
|
|||||||
targetRouter = item.routerName;
|
targetRouter = item.routerName;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Application.router.navigateTo(context, "${targetRouter}");
|
Application.router.navigateTo(context, "$targetRouter");
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget buildSearchInput(BuildContext context) {
|
Widget buildSearchInput(BuildContext context) {
|
||||||
@ -184,11 +184,11 @@ class _MyHomePageState extends State<MyHomePage>
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onDataChange(val) {
|
// void _onDataChange(val) {
|
||||||
if (this.mounted) {
|
// if (this.mounted) {
|
||||||
setState(() {
|
// setState(() {
|
||||||
data = val;
|
// data = val;
|
||||||
});
|
// });
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import 'package:sqflite/sqflite.dart';
|
import 'package:sqflite/sqflite.dart';
|
||||||
import 'dart:async';
|
|
||||||
|
|
||||||
class BaseModel{
|
class BaseModel{
|
||||||
Database db;
|
Database db;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import 'base.dart';
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
|
||||||
import '../common/sql.dart';
|
import '../common/sql.dart';
|
||||||
|
|
||||||
abstract class CatInterface{
|
abstract class CatInterface{
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import 'base.dart';
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import '../common/sql.dart';
|
import '../common/sql.dart';
|
||||||
import "package:flutter/material.dart";
|
import "package:flutter/material.dart";
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import 'package:fluro/fluro.dart';
|
import 'package:fluro/fluro.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../widgets/index.dart';
|
|
||||||
class Application {
|
class Application {
|
||||||
static Router router;
|
static Router router;
|
||||||
static TabController controller;
|
static TabController controller;
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
import 'package:fluro/fluro.dart';
|
import 'package:fluro/fluro.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../widgets/index.dart';
|
import '../widgets/index.dart';
|
||||||
import '../model/widget.dart';
|
|
||||||
import './router_handler.dart';
|
import './router_handler.dart';
|
||||||
|
|
||||||
class Routes {
|
class Routes {
|
||||||
|
@ -1,30 +1,25 @@
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_rookie_book/common/myListView.dart';
|
import 'package:flutter_rookie_book/common/list_view_item.dart';
|
||||||
//import 'package:flutter_rookie_book/components/CompList.dart';
|
|
||||||
import 'package:flutter_rookie_book/components/ListRefresh.dart' as listComp;
|
import 'package:flutter_rookie_book/components/ListRefresh.dart' as listComp;
|
||||||
import 'package:flutter_rookie_book/components/Pagination.dart';
|
import 'package:flutter_rookie_book/components/Pagination.dart';
|
||||||
|
|
||||||
import './widgetFeature/FirstPageItem.dart';
|
import './widgetFeature/FirstPageItem.dart';
|
||||||
import '../common/net_utils.dart';
|
import '../common/net_utils.dart';
|
||||||
|
|
||||||
import 'package:flutter_rookie_book/common/iconNames.dart';
|
import 'package:flutter_rookie_book/common/iconNames.dart';
|
||||||
import '../common/sql.dart';
|
|
||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:url_launcher/url_launcher.dart';
|
|
||||||
|
|
||||||
class FirstPage extends StatefulWidget {
|
class FirstPage extends StatefulWidget {
|
||||||
@override
|
@override
|
||||||
FirstPageState createState() => new FirstPageState();
|
FirstPageState createState() => new FirstPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class FirstPageState extends State<FirstPage> {
|
class FirstPageState extends State<FirstPage> with AutomaticKeepAliveClientMixin{
|
||||||
|
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool get wantKeepAlive => true;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
// TODO: implement initState
|
|
||||||
super.initState();
|
super.initState();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -68,6 +63,7 @@ class FirstPageState extends State<FirstPage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
super.build(context);
|
||||||
return new Column(
|
return new Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
new Container(
|
new Container(
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../components/CompList.dart';
|
import '../components/CompList.dart';
|
||||||
|
@ -1,69 +0,0 @@
|
|||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import '../common/eventBus.dart';
|
|
||||||
|
|
||||||
class ThirdPage extends StatefulWidget {
|
|
||||||
ThirdPage({Key key, this.data2ThirdPage, this.callback}) : super(key: key);
|
|
||||||
final callback;
|
|
||||||
String data2ThirdPage;
|
|
||||||
|
|
||||||
@override
|
|
||||||
ThirdPageState createState() => new ThirdPageState();
|
|
||||||
}
|
|
||||||
|
|
||||||
class ThirdPageState extends State<ThirdPage> {
|
|
||||||
|
|
||||||
String data = '';
|
|
||||||
String inputTxt;
|
|
||||||
TextEditingController controller = new TextEditingController();
|
|
||||||
|
|
||||||
void initState() {
|
|
||||||
//print('data4Two' + widget.data2ThirdPage);
|
|
||||||
data = widget.data2ThirdPage;
|
|
||||||
}
|
|
||||||
|
|
||||||
void firedA() {
|
|
||||||
widget.callback('$inputTxt');
|
|
||||||
}
|
|
||||||
|
|
||||||
void firedB() {
|
|
||||||
eventBus.fire(new MyEvent('$inputTxt'));
|
|
||||||
}
|
|
||||||
|
|
||||||
void _onChanged(String value) {
|
|
||||||
setState(() {
|
|
||||||
inputTxt = value;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return new Center(
|
|
||||||
child: new Column(children: <Widget>[
|
|
||||||
new Container(
|
|
||||||
padding: new EdgeInsets.only(bottom: 15.0),
|
|
||||||
child: new Text('子组件2'),
|
|
||||||
),
|
|
||||||
new Container(
|
|
||||||
padding: new EdgeInsets.only(bottom: 10.0),
|
|
||||||
child: new Text('父传子:' + data),
|
|
||||||
),
|
|
||||||
new Container(
|
|
||||||
margin: new EdgeInsets.only(bottom: 40.0),
|
|
||||||
child: new TextField(
|
|
||||||
controller: controller,
|
|
||||||
onChanged: _onChanged,
|
|
||||||
decoration: (new InputDecoration(labelText: '请输入你要发送的值')))),
|
|
||||||
new Container(
|
|
||||||
child: new RaisedButton(
|
|
||||||
onPressed: firedA, child: new Text('to父组件'))),
|
|
||||||
new Container(
|
|
||||||
child: new RaisedButton(
|
|
||||||
onPressed: firedB, child: new Text('to兄弟组件')))
|
|
||||||
]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
@ -61,7 +61,6 @@ class _CategoryHome extends State<CategoryHome> {
|
|||||||
// 假设进入这个界面的parent一定存在
|
// 假设进入这个界面的parent一定存在
|
||||||
Cat parentCat = catHistory.last;
|
Cat parentCat = catHistory.last;
|
||||||
|
|
||||||
int depth = catHistory.length;
|
|
||||||
|
|
||||||
// 继续搜索显示下一级depth: depth + 1, parentId: parentCat.id
|
// 继续搜索显示下一级depth: depth + 1, parentId: parentCat.id
|
||||||
List<Cat> _categories =
|
List<Cat> _categories =
|
||||||
@ -92,7 +91,7 @@ class _CategoryHome extends State<CategoryHome> {
|
|||||||
targetRouter = item.routerName;
|
targetRouter = item.routerName;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Application.router.navigateTo(context, "${targetRouter}");
|
Application.router.navigateTo(context, "$targetRouter");
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget _buildContent() {
|
Widget _buildContent() {
|
||||||
|
@ -6,30 +6,128 @@
|
|||||||
*/
|
*/
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../model/collection.dart';
|
import '../model/collection.dart';
|
||||||
|
import '../routers/application.dart';
|
||||||
|
import '../event/event-bus.dart';
|
||||||
|
import '../event/event-model.dart';
|
||||||
|
import 'package:event_bus/event_bus.dart';
|
||||||
|
|
||||||
class CollectionPage extends StatefulWidget {
|
class CollectionPage extends StatefulWidget {
|
||||||
_CollectionPageState createState() => _CollectionPageState();
|
_CollectionPageState createState() => _CollectionPageState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _CollectionPageState extends State<CollectionPage> {
|
class _CollectionPageState extends State<CollectionPage>
|
||||||
|
with AutomaticKeepAliveClientMixin {
|
||||||
|
_CollectionPageState() {
|
||||||
|
final eventBus = new EventBus();
|
||||||
|
ApplicationEvent.event = eventBus;
|
||||||
|
}
|
||||||
CollectionControlModel _collectionControl = new CollectionControlModel();
|
CollectionControlModel _collectionControl = new CollectionControlModel();
|
||||||
List<Collection> _collectionList = [];
|
List<Collection> _collectionList = [];
|
||||||
|
ScrollController _scrollController = new ScrollController();
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool get wantKeepAlive => true;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
// TODO: implement initState
|
|
||||||
super.initState();
|
super.initState();
|
||||||
|
_getList();
|
||||||
|
ApplicationEvent.event.on<CollectionEvent>().listen((event) {
|
||||||
|
_getList();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_scrollController.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
void _getList() {
|
||||||
|
_collectionList.clear();
|
||||||
|
_collectionControl.getAllCollection().then((resultList) {
|
||||||
|
resultList.forEach((item) {
|
||||||
|
_collectionList.add(item);
|
||||||
|
});
|
||||||
|
if (this.mounted) {
|
||||||
|
setState(() {
|
||||||
|
_collectionList = _collectionList;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
Widget _renderList(context, index) {
|
||||||
|
if (index == 0) {
|
||||||
|
return Container(
|
||||||
|
height: 40.0,
|
||||||
|
padding: const EdgeInsets.only(left: 10.0),
|
||||||
|
child: Row(
|
||||||
|
children: <Widget>[
|
||||||
|
Icon(
|
||||||
|
Icons.warning,
|
||||||
|
size: 22.0,
|
||||||
|
),
|
||||||
|
SizedBox(
|
||||||
|
width: 5.0,
|
||||||
|
),
|
||||||
|
Text('模拟器重新运行会丢失收藏'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return Container(
|
||||||
|
padding: const EdgeInsets.all(10.0),
|
||||||
|
margin: const EdgeInsets.only(bottom: 7.0),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
color: Colors.white,
|
||||||
|
boxShadow: [
|
||||||
|
new BoxShadow(
|
||||||
|
color: const Color(0xFFd0d0d0),
|
||||||
|
blurRadius: 1.0,
|
||||||
|
spreadRadius: 2.0,
|
||||||
|
offset: Offset(3.0, 2.0),
|
||||||
|
),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
child: ListTile(
|
||||||
|
title: Text(
|
||||||
|
_collectionList[index - 1].name,
|
||||||
|
style: TextStyle(fontSize: 17.0),
|
||||||
|
),
|
||||||
|
trailing:
|
||||||
|
Icon(Icons.keyboard_arrow_right, color: Colors.grey, size: 30.0),
|
||||||
|
onTap: () {
|
||||||
|
Application.router
|
||||||
|
.navigateTo(context, "${_collectionList[index - 1].router}");
|
||||||
|
},
|
||||||
|
),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
_collectionControl.getAllCollection().then((resultList) {
|
super.build(context);
|
||||||
_collectionList = resultList;
|
if (_collectionList.length == 0) {
|
||||||
_collectionList.forEach((item){
|
return ListView(
|
||||||
print(item.toMap());
|
children: <Widget>[
|
||||||
});
|
Column(
|
||||||
});
|
children: <Widget>[
|
||||||
return Container(
|
Image.asset(
|
||||||
child: Text('敬请期待'),
|
'assets/images/nothing.png',
|
||||||
|
fit: BoxFit.contain,
|
||||||
|
width: MediaQuery.of(context).size.width / 2,
|
||||||
|
),
|
||||||
|
Text('暂无收藏,赶紧去收藏一个吧!'),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return ListView.builder(
|
||||||
|
itemBuilder: _renderList,
|
||||||
|
itemCount: _collectionList.length + 1,
|
||||||
|
controller: _scrollController,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
/*
|
||||||
|
* @Author: 一凨
|
||||||
|
* @Date: 2019-01-11 14:39:48
|
||||||
|
* @Last Modified by: 一凨
|
||||||
|
* @Last Modified time: 2019-01-11 14:40:09
|
||||||
|
*/
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'widgetPage/cate_card.dart';
|
import 'widgetPage/cate_card.dart';
|
||||||
import '../model/cat.dart';
|
import '../model/cat.dart';
|
||||||
@ -13,7 +19,7 @@ class WidgetPage extends StatefulWidget {
|
|||||||
SecondPageState createState() => new SecondPageState(catModel);
|
SecondPageState createState() => new SecondPageState(catModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
class SecondPageState extends State<WidgetPage> {
|
class SecondPageState extends State<WidgetPage> with AutomaticKeepAliveClientMixin{
|
||||||
CatControlModel catModel;
|
CatControlModel catModel;
|
||||||
SecondPageState(this.catModel) : super();
|
SecondPageState(this.catModel) : super();
|
||||||
|
|
||||||
@ -23,6 +29,10 @@ class SecondPageState extends State<WidgetPage> {
|
|||||||
|
|
||||||
List<Cat> categories = [];
|
List<Cat> categories = [];
|
||||||
|
|
||||||
|
@override
|
||||||
|
bool get wantKeepAlive => true;
|
||||||
|
|
||||||
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
renderCats();
|
renderCats();
|
||||||
@ -41,7 +51,6 @@ class SecondPageState extends State<WidgetPage> {
|
|||||||
Widget buildGrid() {
|
Widget buildGrid() {
|
||||||
// 存放最后的widget
|
// 存放最后的widget
|
||||||
List<Widget> tiles = [];
|
List<Widget> tiles = [];
|
||||||
Widget content;
|
|
||||||
for (Cat item in categories) {
|
for (Cat item in categories) {
|
||||||
tiles.add(new CateCard(category: item));
|
tiles.add(new CateCard(category: item));
|
||||||
}
|
}
|
||||||
@ -52,6 +61,7 @@ class SecondPageState extends State<WidgetPage> {
|
|||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
super.build(context);
|
||||||
if (categories.length == 0) {
|
if (categories.length == 0) {
|
||||||
return ListView(
|
return ListView(
|
||||||
children: <Widget>[new Container()],
|
children: <Widget>[new Container()],
|
||||||
@ -63,10 +73,4 @@ class SecondPageState extends State<WidgetPage> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onChanged(String value) {
|
|
||||||
setState(() {
|
|
||||||
active = value;
|
|
||||||
data = '90';
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: AppBar 的示例
|
* tartget: AppBar 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: AppBar 的示例
|
* tartget: AppBar 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -48,18 +48,18 @@ class _DemoState extends State<Demo> {
|
|||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'AppBar',
|
title: 'AppBar',
|
||||||
codeUrl: 'componentss/Bar/AppBar/demo.dart',
|
codeUrl: 'componentss/Bar/AppBar/demo.dart',
|
||||||
contentList: [ allDemoBoxs(context, this) ],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/material/AppBar-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/material/AppBar-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 AppBar widget
|
* 所有的 AppBar widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDemoBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
* email: zhu.yan@alibaba-inc.com
|
* email: zhu.yan@alibaba-inc.com
|
||||||
* tartget: BottomAppBar 的示例
|
* tartget: BottomAppBar 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,6 +7,7 @@
|
|||||||
* tartget: BottomAppBar 的示例
|
* tartget: BottomAppBar 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -24,11 +25,6 @@ const String _Text1 =
|
|||||||
> 通常与Scaffold和FloatingActionButton一起使用。
|
> 通常与Scaffold和FloatingActionButton一起使用。
|
||||||
""";
|
""";
|
||||||
|
|
||||||
const String _Text2 =
|
|
||||||
"""### **进阶用法**
|
|
||||||
> BottomAppBar
|
|
||||||
-
|
|
||||||
""";
|
|
||||||
|
|
||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = '/components//Bar/BottomAppBar';
|
static const String routeName = '/components//Bar/BottomAppBar';
|
||||||
@ -43,18 +39,18 @@ class _DemoState extends State<Demo> {
|
|||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'BottomAppBar',
|
title: 'BottomAppBar',
|
||||||
codeUrl: 'componentss/Bar/BottomAppBar/demo.dart',
|
codeUrl: 'componentss/Bar/BottomAppBar/demo.dart',
|
||||||
contentList: [allDomeBoxs(context, this)],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/material/BottomAppBar-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/material/BottomAppBar-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 BottomAppBar widget
|
* 所有的 BottomAppBar widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDomeBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: ButtonBar 的示例
|
* tartget: ButtonBar 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: ButtonBar 的示例
|
* tartget: ButtonBar 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -26,11 +26,6 @@ const String _Text1 =
|
|||||||
- 当Directionality为TextDirection.ltr时,按钮栏的子项右对齐,最后一个子项成为最右边的子项。当Directionality TextDirection.rtl时,子项被左对齐,最后一个子项成为最左边的子项。
|
- 当Directionality为TextDirection.ltr时,按钮栏的子项右对齐,最后一个子项成为最右边的子项。当Directionality TextDirection.rtl时,子项被左对齐,最后一个子项成为最左边的子项。
|
||||||
""";
|
""";
|
||||||
|
|
||||||
const String _Text2 =
|
|
||||||
"""### **进阶用法**
|
|
||||||
> ButtonBar
|
|
||||||
-
|
|
||||||
""";
|
|
||||||
|
|
||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = '/components/Bar/ButtonBar';
|
static const String routeName = '/components/Bar/ButtonBar';
|
||||||
@ -44,19 +39,19 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'ButtonBar',
|
title: 'ButtonBar',
|
||||||
codeUrl: 'componentss//Bar/ButtonBar/demo.dart',
|
codeUrl: 'components/Bar/ButtonBar/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/material/ButtonBar-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/material/ButtonBar-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 ButtonBar widget
|
* 所有的 ButtonBar widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDemoBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: FlexibleSpaceBar 的示例
|
* tartget: FlexibleSpaceBar 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: FlexibleSpaceBar 的示例
|
* tartget: FlexibleSpaceBar 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -27,11 +27,6 @@ const String _Text1 =
|
|||||||
- 要调整 AppBar 大小,必须将其包装在 FlexibleSpaceBar.createSettings 返回的 widget 中 ,以将大小调整信息传递给 FlexibleSpaceBar。
|
- 要调整 AppBar 大小,必须将其包装在 FlexibleSpaceBar.createSettings 返回的 widget 中 ,以将大小调整信息传递给 FlexibleSpaceBar。
|
||||||
""";
|
""";
|
||||||
|
|
||||||
const String _Text2 =
|
|
||||||
"""### **进阶用法**
|
|
||||||
> FlexibleSpaceBar
|
|
||||||
-
|
|
||||||
""";
|
|
||||||
|
|
||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = '/components//Bar/FlexibleSpaceBar';
|
static const String routeName = '/components//Bar/FlexibleSpaceBar';
|
||||||
@ -45,19 +40,19 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'FlexibleSpaceBar',
|
title: 'FlexibleSpaceBar',
|
||||||
codeUrl: 'Bar/FlexibleSpaceBar/demo.dart',
|
codeUrl: 'components/Bar/FlexibleSpaceBar/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/material/FlexibleSpaceBar-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/material/FlexibleSpaceBar-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 FlexibleSpaceBar widget
|
* 所有的 FlexibleSpaceBar widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDemoBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: SliverAppBar 的示例
|
* tartget: SliverAppBar 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: SliverAppBar 的示例
|
* tartget: SliverAppBar 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -41,18 +41,18 @@ class _DemoState extends State<Demo> {
|
|||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'SliverAppBar',
|
title: 'SliverAppBar',
|
||||||
codeUrl: 'componentss/Bar/SliverAppBar/demo.dart',
|
codeUrl: 'componentss/Bar/SliverAppBar/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList:[allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/widgets/SliverAppBar-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/widgets/SliverAppBar-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 SliverAppBar widget
|
* 所有的 SliverAppBar widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDemoBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: SnackBar 的示例
|
* tartget: SnackBar 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: SnackBar 的示例
|
* tartget: SnackBar 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -27,11 +27,6 @@ const String _Text1 =
|
|||||||
- 要控制SnackBar保持可见的时间,请指定持续时间。
|
- 要控制SnackBar保持可见的时间,请指定持续时间。
|
||||||
""";
|
""";
|
||||||
|
|
||||||
const String _Text2 =
|
|
||||||
"""### **进阶用法**
|
|
||||||
> SnackBar
|
|
||||||
-
|
|
||||||
""";
|
|
||||||
|
|
||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = '/components//Bar/SnackBar';
|
static const String routeName = '/components//Bar/SnackBar';
|
||||||
@ -46,18 +41,18 @@ class _DemoState extends State<Demo> {
|
|||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'SnackBar',
|
title: 'SnackBar',
|
||||||
codeUrl: 'componentss/Bar/SnackBar/demo.dart',
|
codeUrl: 'componentss/Bar/SnackBar/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/material/SnackBar-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/material/SnackBar-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 SnackBar widget
|
* 所有的 SnackBar widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDemoBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -7,10 +7,8 @@
|
|||||||
* tartget: SnackBarAction 的示例
|
* tartget: SnackBarAction 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'demo.dart';
|
|
||||||
|
|
||||||
class SnackBarActionDemo extends StatefulWidget {
|
class SnackBarActionDemo extends StatefulWidget {
|
||||||
_Demo createState() => _Demo();
|
_Demo createState() => _Demo();
|
||||||
|
@ -7,10 +7,7 @@
|
|||||||
* tartget: SnackBarAction 的示例
|
* tartget: SnackBarAction 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import '../../../../components/markdown.dart';
|
|
||||||
import './demo.dart' as SnackBarDemo;
|
import './demo.dart' as SnackBarDemo;
|
||||||
|
|
||||||
const String _Text0 = """
|
const String _Text0 = """
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: TabBar 的示例
|
* tartget: TabBar 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
class TabBarDemo extends StatefulWidget {
|
class TabBarDemo extends StatefulWidget {
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* tartget: SnackBarAction 的示例
|
* tartget: SnackBarAction 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import './demo.dart';
|
import './demo.dart';
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: Card 的示例
|
* tartget: Card 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: Card 的示例
|
* tartget: Card 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -25,11 +25,6 @@ const String _Text1 =
|
|||||||
> 此示例显示了创建卡片窗口组件,其中显示了相册信息和两个操作
|
> 此示例显示了创建卡片窗口组件,其中显示了相册信息和两个操作
|
||||||
""";
|
""";
|
||||||
|
|
||||||
const String _Text2 =
|
|
||||||
"""### **进阶用法**
|
|
||||||
> Card
|
|
||||||
-
|
|
||||||
""";
|
|
||||||
|
|
||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = '/components/Card/Card';
|
static const String routeName = '/components/Card/Card';
|
||||||
@ -43,19 +38,19 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'Card',
|
title: 'Card',
|
||||||
codeUrl: 'componentss/Card/Card/demo.dart',
|
codeUrl: 'components/Card/Card/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/material/Card-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/material/Card-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 Card widget
|
* 所有的 Card widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDemoBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -27,8 +27,7 @@ final List<InputEntry> _lists=<InputEntry>[
|
|||||||
const InputEntry('web', 'W'),
|
const InputEntry('web', 'W'),
|
||||||
];
|
];
|
||||||
|
|
||||||
List<String> _inputs=<String>[];
|
Iterable<Widget> get _rawChipWidget sync*{
|
||||||
Iterable<Widget> get RawChipWidget sync*{
|
|
||||||
for(InputEntry value in _lists){
|
for(InputEntry value in _lists){
|
||||||
yield Padding(
|
yield Padding(
|
||||||
padding: const EdgeInsets.all(4.0),
|
padding: const EdgeInsets.all(4.0),
|
||||||
@ -57,7 +56,7 @@ Iterable<Widget> get RawChipWidget sync*{
|
|||||||
return Column(
|
return Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Wrap(
|
Wrap(
|
||||||
children: RawChipWidget.toList(),
|
children: _rawChipWidget.toList(),
|
||||||
),
|
),
|
||||||
|
|
||||||
],
|
],
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* tartget: xxx
|
* tartget: xxx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* tartget: xxx
|
* tartget: xxx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* tartget: xxx
|
* tartget: xxx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
||||||
@ -72,7 +70,7 @@ class _DialogMoreDemo extends State<DialogMoreDemo> {
|
|||||||
value += 1;
|
value += 1;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
child: Text("我是一个Dialog, 点我更新value: ${value}"),
|
child: Text("我是一个Dialog, 点我更新value: $value"),
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -105,3 +103,4 @@ class _DialogMoreDemo extends State<DialogMoreDemo> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* tartget: xxx
|
* tartget: xxx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* tartget: xxx
|
* tartget: xxx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* tartget: xxx
|
* tartget: xxx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,8 +7,6 @@
|
|||||||
* tartget: xxx
|
* tartget: xxx
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'dart:async';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
import 'dart:async';
|
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import './model.dart';
|
import './model.dart';
|
||||||
|
@ -39,19 +39,19 @@ class Demo extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _DemoState extends State<Demo> {
|
class _DemoState extends State<Demo> {
|
||||||
var animatedList = null;
|
State animatedList;
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'AnimatedList',
|
title: 'AnimatedList',
|
||||||
codeUrl: 'componentss/List/AnimatedList/demo.dart',
|
codeUrl: 'components/List/AnimatedList/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList: [allDemoBoxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/widgets/AnimatedList-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/widgets/AnimatedList-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 AnimatedList widget
|
* 所有的 AnimatedList widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: ListBody 的示例
|
* tartget: ListBody 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
* tartget: ListBody 的示例
|
* tartget: ListBody 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -41,19 +41,19 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'ListBody',
|
title: 'ListBody',
|
||||||
codeUrl: 'componentss/List/ListBody/demo.dart',
|
codeUrl: 'components/List/ListBody/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/widgets/ListBody-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/widgets/ListBody-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 ListBody widget
|
* 所有的 ListBody widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDemoBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: ListView 的示例
|
* tartget: ListView 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -86,8 +85,8 @@ class ListViewLessDefault extends StatelessWidget {
|
|||||||
dense:true, // item 直观感受是整体大小
|
dense:true, // item 直观感受是整体大小
|
||||||
contentPadding: EdgeInsets.all(10.0),// item 内容内边距
|
contentPadding: EdgeInsets.all(10.0),// item 内容内边距
|
||||||
enabled:true,
|
enabled:true,
|
||||||
onTap:(){print('点击:${index}');},// item onTap 点击事件
|
onTap:(){print('点击:$index');},// item onTap 点击事件
|
||||||
onLongPress:(){print('长按:${index}');},// item onLongPress 长按事件
|
onLongPress:(){print('长按:$index');},// item onLongPress 长按事件
|
||||||
selected:false, // item 是否选中状态
|
selected:false, // item 是否选中状态
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -111,8 +110,8 @@ class ListViewLessDefault extends StatelessWidget {
|
|||||||
dense:true, // item 直观感受是整体大小
|
dense:true, // item 直观感受是整体大小
|
||||||
contentPadding: EdgeInsets.all(10.0),// item 内容内边距
|
contentPadding: EdgeInsets.all(10.0),// item 内容内边距
|
||||||
enabled:true,
|
enabled:true,
|
||||||
onTap:(){print('点击:${index}');},// item onTap 点击事件
|
onTap:(){print('点击:$index');},// item onTap 点击事件
|
||||||
onLongPress:(){print('长按:${index}');},// item onLongPress 长按事件
|
onLongPress:(){print('长按:$index');},// item onLongPress 长按事件
|
||||||
selected:false, // item 是否选中状态
|
selected:false, // item 是否选中状态
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: ListView 的示例
|
* tartget: ListView 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -68,19 +67,19 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'ListView',
|
title: 'ListView',
|
||||||
codeUrl: 'componentss/List/ListView/demo.dart',
|
codeUrl: '/componentss/List/ListView/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/widgets/ListView-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/widgets/ListView-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 ListView widget
|
* 所有的 ListView widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
*/
|
*/
|
||||||
Widget allDemoBoxs(BuildContext context, _DemoState that) {
|
Widget allCheckboxs(BuildContext context, _DemoState that) {
|
||||||
return Container(
|
return Container(
|
||||||
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
//padding: new EdgeInsets.only(bottom: 20.0, top: 20.0, left: 0, right: 0),
|
||||||
child: Column(
|
child: Column(
|
||||||
|
@ -13,7 +13,6 @@ class CheckedPopupMenuItemDemo extends StatefulWidget {
|
|||||||
}
|
}
|
||||||
|
|
||||||
class _CheckedPopupMenuItemDemoState extends State<CheckedPopupMenuItemDemo> {
|
class _CheckedPopupMenuItemDemoState extends State<CheckedPopupMenuItemDemo> {
|
||||||
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
|
|
||||||
List<String> _checkedValues;
|
List<String> _checkedValues;
|
||||||
|
|
||||||
final String _checkedValue1 = 'One';
|
final String _checkedValue1 = 'One';
|
||||||
|
@ -12,7 +12,6 @@ import './DropdownMenuItem/index.dart' as DropdownMenuItem;
|
|||||||
import './PopupMenuButton/index.dart' as PopupMenuButton;
|
import './PopupMenuButton/index.dart' as PopupMenuButton;
|
||||||
import './PopupMenuDivider/index.dart' as PopupMenuDivider;
|
import './PopupMenuDivider/index.dart' as PopupMenuDivider;
|
||||||
import './PopupMenuEntry/index.dart' as PopupMenuEntry;
|
import './PopupMenuEntry/index.dart' as PopupMenuEntry;
|
||||||
import './PopupMenuItem/index.dart' as PopupMenuItem;
|
|
||||||
import './PopupMenuItemState/index.dart' as PopupMenuItemState;
|
import './PopupMenuItemState/index.dart' as PopupMenuItemState;
|
||||||
|
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: BottomNavigationBar 的示例
|
* tartget: BottomNavigationBar 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
* email: zhu.yan@alibaba-inc.com
|
* email: zhu.yan@alibaba-inc.com
|
||||||
* tartget: BottomNavigationBar 的示例
|
* tartget: BottomNavigationBar 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../routers/application.dart';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
|
|
||||||
@ -42,7 +42,7 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'BottomNavigationBar',
|
title: 'BottomNavigationBar',
|
||||||
codeUrl: '${Application.github['widgetsURL']}components/Navigation/BottomNavigationBar/demo.dart',
|
codeUrl: 'components/Navigation/BottomNavigationBar/demo.dart',
|
||||||
contentList: [allDemoBoxs(context, this)],
|
contentList: [allDemoBoxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/material/BottomNavigationBar-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/material/BottomNavigationBar-class.html',
|
||||||
bottomNaviBar:BottomNavigationBarDemo.BottomNavigationBarFullDefault()
|
bottomNaviBar:BottomNavigationBarDemo.BottomNavigationBarFullDefault()
|
||||||
@ -50,7 +50,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 BottomNavigationBar widget
|
* 所有的 BottomNavigationBar widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: BottomNavigationBarItem 的示例
|
* tartget: BottomNavigationBarItem 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,8 +7,7 @@
|
|||||||
* tartget: BottomNavigationBarItem 的示例
|
* tartget: BottomNavigationBarItem 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import '../../../../routers/application.dart';
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -26,11 +25,6 @@ const String _Text1 =
|
|||||||
> 这个类很少单独使用。通常嵌入在上面的一个底部 bottom navigation widgets 中。
|
> 这个类很少单独使用。通常嵌入在上面的一个底部 bottom navigation widgets 中。
|
||||||
""";
|
""";
|
||||||
|
|
||||||
const String _Text2 =
|
|
||||||
"""### **进阶用法**
|
|
||||||
> BottomNavigationBarItem
|
|
||||||
-
|
|
||||||
""";
|
|
||||||
|
|
||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = '/components/Navigation/BottomNavigationBarItem';
|
static const String routeName = '/components/Navigation/BottomNavigationBarItem';
|
||||||
@ -44,14 +38,14 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'BottomNavigationBarItem',
|
title: 'BottomNavigationBarItem',
|
||||||
codeUrl: '${Application.github['widgetsURL']}components/Bar/BottomNavigationBarItem/demo.dart',
|
codeUrl: 'components/Bar/BottomNavigationBarItem/demo.dart',
|
||||||
contentList: [allCheckboxs(context, this)],
|
contentList: [allCheckboxs(context, this)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/widgets/BottomNavigationBarItem-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/widgets/BottomNavigationBarItem-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 BottomNavigationBarItem widget
|
* 所有的 BottomNavigationBarItem widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
|
@ -15,7 +15,7 @@ enum Location {
|
|||||||
typedef DemoItemBodyBuilder<T> = Widget Function(DemoItem<T> item);
|
typedef DemoItemBodyBuilder<T> = Widget Function(DemoItem<T> item);
|
||||||
typedef ValueToString<T> = String Function(T value);
|
typedef ValueToString<T> = String Function(T value);
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* google flutter 详情多个例子地址:
|
* google flutter 详情多个例子地址:
|
||||||
* https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/material/expansion_panels_demo.dart
|
* https://github.com/flutter/flutter/blob/master/examples/flutter_gallery/lib/demo/material/expansion_panels_demo.dart
|
||||||
*/
|
*/
|
||||||
@ -135,11 +135,6 @@ class _ExpansionPanelsDemoState extends State<ExpansionPanelsDemo> {
|
|||||||
hint: 'Select location',
|
hint: 'Select location',
|
||||||
valueToString: (Location location) => location.toString().split('.')[1],
|
valueToString: (Location location) => location.toString().split('.')[1],
|
||||||
builder: (DemoItem<Location> item) {
|
builder: (DemoItem<Location> item) {
|
||||||
void close() {
|
|
||||||
setState(() {
|
|
||||||
item.isExpanded = false;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
return Form(
|
return Form(
|
||||||
child: Builder(
|
child: Builder(
|
||||||
builder: (BuildContext context) {
|
builder: (BuildContext context) {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* @Author: xiaojia.dxj
|
* @Author: xiaojia.dxj
|
||||||
* @Date: 2018-12-17 15:37:32
|
* @Date: 2018-12-17 15:37:32
|
||||||
* @Last Modified by: xiaojia.dxj
|
* @Last Modified by: 一凨
|
||||||
* @Last Modified time: 2018-12-18 19:12:32
|
* @Last Modified time: 2019-01-11 15:17:26
|
||||||
*/
|
*/
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
*/
|
*/
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import 'demo.dart';
|
|
||||||
|
|
||||||
const String content0 = '''
|
const String content0 = '''
|
||||||
### **简介**
|
### **简介**
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
* @Last Modified time: 2018-12-15 21:26:11
|
* @Last Modified time: 2018-12-15 21:26:11
|
||||||
*/
|
*/
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/material.dart';
|
|
||||||
import '../../../../common/widget_demo.dart';
|
import '../../../../common/widget_demo.dart';
|
||||||
import './demo.dart';
|
import './demo.dart';
|
||||||
|
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
* email: zhu.yan@alibaba-inc.com
|
* email: zhu.yan@alibaba-inc.com
|
||||||
* tartget: DropdownButton 的示例
|
* tartget: DropdownButton 的示例
|
||||||
*/
|
*/
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -14,15 +13,15 @@ import 'package:flutter/material.dart';
|
|||||||
* isDisabled:是否是禁用,isDisabled 默认为true
|
* isDisabled:是否是禁用,isDisabled 默认为true
|
||||||
* */
|
* */
|
||||||
class DropdownButtonDefault extends StatelessWidget {
|
class DropdownButtonDefault extends StatelessWidget {
|
||||||
List<DropdownMenuItem> generateItemList() {
|
List<DropdownMenuItem> generateItemList() {
|
||||||
List<DropdownMenuItem> items = new List();
|
final List<DropdownMenuItem> items = new List();
|
||||||
DropdownMenuItem item1 = new DropdownMenuItem(
|
final DropdownMenuItem item1 = new DropdownMenuItem(
|
||||||
value: '张三', child: new Text('张三'));
|
value: '张三', child: new Text('张三'));
|
||||||
DropdownMenuItem item2 = new DropdownMenuItem(
|
final DropdownMenuItem item2 = new DropdownMenuItem(
|
||||||
value: '李四', child: new Text('李四'));
|
value: '李四', child: new Text('李四'));
|
||||||
DropdownMenuItem item3 = new DropdownMenuItem(
|
final DropdownMenuItem item3 = new DropdownMenuItem(
|
||||||
value: '王二', child: new Text('王二'));
|
value: '王二', child: new Text('王二'));
|
||||||
DropdownMenuItem item4 = new DropdownMenuItem(
|
final DropdownMenuItem item4 = new DropdownMenuItem(
|
||||||
value: '麻子', child: new Text('麻子'));
|
value: '麻子', child: new Text('麻子'));
|
||||||
items.add(item1);
|
items.add(item1);
|
||||||
items.add(item2);
|
items.add(item2);
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
* 对应文档地址:https://docs.flutter.io/flutter/material/DropdownButton-class.html
|
* 对应文档地址:https://docs.flutter.io/flutter/material/DropdownButton-class.html
|
||||||
*/
|
*/
|
||||||
import '../../../../../common/widget_demo.dart';
|
import '../../../../../common/widget_demo.dart';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -56,7 +57,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 DropdownButton 按钮
|
* 所有的 DropdownButton 按钮
|
||||||
*/
|
*/
|
||||||
Widget allDropdownButtons(BuildContext context,_DemoState that){
|
Widget allDropdownButtons(BuildContext context,_DemoState that){
|
||||||
|
@ -16,7 +16,7 @@ import 'package:flutter/material.dart';
|
|||||||
class FlatButtonDefault extends StatelessWidget {
|
class FlatButtonDefault extends StatelessWidget {
|
||||||
final bool isDisabled;
|
final bool isDisabled;
|
||||||
|
|
||||||
const FlatButtonDefault([bool this.isDisabled = true])
|
const FlatButtonDefault([ this.isDisabled = true])
|
||||||
: assert(isDisabled != null),
|
: assert(isDisabled != null),
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ class FlatButtonIconDefault extends StatelessWidget {
|
|||||||
final IconData icon;
|
final IconData icon;
|
||||||
|
|
||||||
const FlatButtonIconDefault(
|
const FlatButtonIconDefault(
|
||||||
[bool this.isDisabled = true, IconData this.icon = Icons.add_circle])
|
[ this.isDisabled = true, this.icon = Icons.add_circle])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
Color _randomColor() {
|
Color _randomColor() {
|
||||||
@ -73,10 +73,10 @@ class FlatButtonCustom extends StatelessWidget {
|
|||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
|
|
||||||
const FlatButtonCustom([
|
const FlatButtonCustom([
|
||||||
String this.txt = '自定义按钮',
|
this.txt = '自定义按钮',
|
||||||
Color this.color = Colors.blueAccent,
|
this.color = Colors.blueAccent,
|
||||||
ShapeBorder this.shape,
|
this.shape,
|
||||||
VoidCallback this.onPressed
|
this.onPressed
|
||||||
]) :super();
|
]) :super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -8,39 +8,12 @@
|
|||||||
* 对应文档地址:https://docs.flutter.io/flutter/material/FlatButton-class.html
|
* 对应文档地址:https://docs.flutter.io/flutter/material/FlatButton-class.html
|
||||||
*/
|
*/
|
||||||
import '../../../../../common/widget_demo.dart';
|
import '../../../../../common/widget_demo.dart';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
import './demo.dart' as flatButton;
|
import './demo.dart' as flatButton;
|
||||||
|
|
||||||
const String _markdownData = """# Markdown Example
|
|
||||||
Markdown allows you to easily include formatted text, images, and even formatted Dart code in your app.
|
|
||||||
## Styling
|
|
||||||
Style text as _italic_, __bold__, or `inline code`.
|
|
||||||
- Use bulleted lists
|
|
||||||
- To better clarify
|
|
||||||
- Your points
|
|
||||||
## Links
|
|
||||||
You can use [hyperlinks](hyperlink) in markdown
|
|
||||||
## Images
|
|
||||||
You can include images:
|
|
||||||

|
|
||||||
## Markdown widget
|
|
||||||
This is an example of how to create your own Markdown widget:
|
|
||||||
new Markdown(data: 'Hello _world_!');
|
|
||||||
## Code blocks
|
|
||||||
Formatted Dart code looks really pretty too:
|
|
||||||
```
|
|
||||||
void main() {
|
|
||||||
runApp(new MaterialApp(
|
|
||||||
home: new Scaffold(
|
|
||||||
body: new Markdown(data: markdownData)
|
|
||||||
)
|
|
||||||
));
|
|
||||||
}
|
|
||||||
```
|
|
||||||
Enjoy!
|
|
||||||
""";
|
|
||||||
|
|
||||||
|
|
||||||
const String _flatText0 =
|
const String _flatText0 =
|
||||||
@ -88,7 +61,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 FlatButton 按钮
|
* 所有的 FlatButton 按钮
|
||||||
*/
|
*/
|
||||||
Widget allFlatButtons(BuildContext context){
|
Widget allFlatButtons(BuildContext context){
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
* email: zhu.yan@alibaba-inc.com
|
* email: zhu.yan@alibaba-inc.com
|
||||||
* tartget: OutlineButton 的示例
|
* tartget: OutlineButton 的示例
|
||||||
*/
|
*/
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -16,7 +15,7 @@ import 'package:flutter/material.dart';
|
|||||||
class FloatingActionButtonDefault extends StatelessWidget {
|
class FloatingActionButtonDefault extends StatelessWidget {
|
||||||
final bool isDisabled;
|
final bool isDisabled;
|
||||||
|
|
||||||
const FloatingActionButtonDefault([bool this.isDisabled = true])
|
const FloatingActionButtonDefault([ this.isDisabled = true])
|
||||||
: assert(isDisabled != null),
|
: assert(isDisabled != null),
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -41,10 +40,10 @@ class FloatingActionButtonCustom extends StatelessWidget {
|
|||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
|
|
||||||
const FloatingActionButtonCustom(
|
const FloatingActionButtonCustom(
|
||||||
[String this.txt = '自定义按钮',
|
[ this.txt = '自定义按钮',
|
||||||
Color this.color = Colors.orange,
|
this.color = Colors.orange,
|
||||||
ShapeBorder this.shape,
|
this.shape,
|
||||||
VoidCallback this.onPressed])
|
this.onPressed])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -93,10 +92,10 @@ class FloatingActionButtonCustom2 extends StatelessWidget {
|
|||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
|
|
||||||
const FloatingActionButtonCustom2(
|
const FloatingActionButtonCustom2(
|
||||||
[String this.txt = '自定义按钮',
|
[ this.txt = '自定义按钮',
|
||||||
Color this.color = Colors.orange,
|
this.color = Colors.orange,
|
||||||
ShapeBorder this.shape,
|
this.shape,
|
||||||
VoidCallback this.onPressed])
|
this.onPressed])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -14,8 +14,6 @@ import 'package:flutter/material.dart';
|
|||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
import './demo.dart' as floatingActionButton;
|
import './demo.dart' as floatingActionButton;
|
||||||
|
|
||||||
const String _floatingActionTitle =
|
|
||||||
'FloatingAction Button 示例';
|
|
||||||
|
|
||||||
const String _floatingActionText0 =
|
const String _floatingActionText0 =
|
||||||
"""### **简介**
|
"""### **简介**
|
||||||
@ -68,7 +66,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 FloatingActionButton 按钮
|
* 所有的 FloatingActionButton 按钮
|
||||||
*/
|
*/
|
||||||
Widget allFloatingActionButtons(BuildContext context,_DemoState that){
|
Widget allFloatingActionButtons(BuildContext context,_DemoState that){
|
||||||
@ -105,26 +103,26 @@ Widget allFloatingActionButtons(BuildContext context,_DemoState that){
|
|||||||
* alert 弹框
|
* alert 弹框
|
||||||
* context:容器的父级
|
* context:容器的父级
|
||||||
* */
|
* */
|
||||||
void _showMessage(String name, BuildContext context) {
|
// void _showMessage(String name, BuildContext context) {
|
||||||
showDialog(
|
// showDialog(
|
||||||
// alert 的父级
|
// // alert 的父级
|
||||||
context: context,
|
// context: context,
|
||||||
builder: (BuildContext context) {
|
// builder: (BuildContext context) {
|
||||||
return AlertDialog(
|
// return AlertDialog(
|
||||||
title: new Text('提示'),
|
// title: new Text('提示'),
|
||||||
content: new Text(name),
|
// content: new Text(name),
|
||||||
actions: <Widget>[
|
// actions: <Widget>[
|
||||||
new FlatButton(
|
// new FlatButton(
|
||||||
// alert 的取消按钮
|
// // alert 的取消按钮
|
||||||
onPressed: () {
|
// onPressed: () {
|
||||||
// 取消的事件
|
// // 取消的事件
|
||||||
Navigator.of(context).pop(true);
|
// Navigator.of(context).pop(true);
|
||||||
},
|
// },
|
||||||
child: new Text('取消'))
|
// child: new Text('取消'))
|
||||||
]);
|
// ]);
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 带align的text
|
* 带align的text
|
||||||
|
@ -19,7 +19,7 @@ final int len = IconNames.Names.length;
|
|||||||
class IconButtonDefault extends StatelessWidget {
|
class IconButtonDefault extends StatelessWidget {
|
||||||
final bool isDisabled;
|
final bool isDisabled;
|
||||||
|
|
||||||
const IconButtonDefault([bool this.isDisabled = true])
|
const IconButtonDefault([ this.isDisabled = true])
|
||||||
: assert(isDisabled != null),
|
: assert(isDisabled != null),
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -43,10 +43,10 @@ class IconButtonCustom extends StatelessWidget {
|
|||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
|
|
||||||
const IconButtonCustom(
|
const IconButtonCustom(
|
||||||
[String this.txt = '自定义按钮',
|
[ this.txt = '自定义按钮',
|
||||||
Color this.color = Colors.blueAccent,
|
this.color = Colors.blueAccent,
|
||||||
ShapeBorder this.shape,
|
this.shape,
|
||||||
VoidCallback this.onPressed])
|
this.onPressed])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
getIcons(){
|
getIcons(){
|
||||||
|
@ -60,7 +60,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 IconButton 按钮
|
* 所有的 IconButton 按钮
|
||||||
*/
|
*/
|
||||||
Widget allIconButtons(BuildContext context,_DemoState that){
|
Widget allIconButtons(BuildContext context,_DemoState that){
|
||||||
|
@ -16,7 +16,7 @@ import 'package:flutter/material.dart';
|
|||||||
class OutlineButtonDefault extends StatelessWidget {
|
class OutlineButtonDefault extends StatelessWidget {
|
||||||
final bool isDisabled;
|
final bool isDisabled;
|
||||||
|
|
||||||
const OutlineButtonDefault([bool this.isDisabled = true])
|
const OutlineButtonDefault([ this.isDisabled = true])
|
||||||
: assert(isDisabled != null),
|
: assert(isDisabled != null),
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ class OutlineButtonIconDefault extends StatelessWidget {
|
|||||||
final IconData icon;
|
final IconData icon;
|
||||||
|
|
||||||
const OutlineButtonIconDefault(
|
const OutlineButtonIconDefault(
|
||||||
[bool this.isDisabled = true, IconData this.icon = Icons.add_circle])
|
[ this.isDisabled = true, this.icon = Icons.add_circle])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@ -66,10 +66,10 @@ class OutlineButtonCustom extends StatelessWidget {
|
|||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
|
|
||||||
const OutlineButtonCustom(
|
const OutlineButtonCustom(
|
||||||
[String this.txt = '自定义按钮',
|
[ this.txt = '自定义按钮',
|
||||||
Color this.color = Colors.blueAccent,
|
this.color = Colors.blueAccent,
|
||||||
ShapeBorder this.shape,
|
this.shape,
|
||||||
VoidCallback this.onPressed])
|
this.onPressed])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -69,7 +69,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 OutlineButton 按钮
|
* 所有的 OutlineButton 按钮
|
||||||
*/
|
*/
|
||||||
Widget allOutlineButtons(BuildContext context,_DemoState that){
|
Widget allOutlineButtons(BuildContext context,_DemoState that){
|
||||||
@ -130,26 +130,26 @@ Widget allOutlineButtons(BuildContext context,_DemoState that){
|
|||||||
* alert 弹框
|
* alert 弹框
|
||||||
* context:容器的父级
|
* context:容器的父级
|
||||||
* */
|
* */
|
||||||
void _showMessage(String name, BuildContext context) {
|
// void _showMessage(String name, BuildContext context) {
|
||||||
showDialog(
|
// showDialog(
|
||||||
// alert 的父级
|
// // alert 的父级
|
||||||
context: context,
|
// context: context,
|
||||||
builder: (BuildContext context) {
|
// builder: (BuildContext context) {
|
||||||
return AlertDialog(
|
// return AlertDialog(
|
||||||
title: new Text('提示'),
|
// title: new Text('提示'),
|
||||||
content: new Text(name),
|
// content: new Text(name),
|
||||||
actions: <Widget>[
|
// actions: <Widget>[
|
||||||
new FlatButton(
|
// new FlatButton(
|
||||||
// alert 的取消按钮
|
// // alert 的取消按钮
|
||||||
onPressed: () {
|
// onPressed: () {
|
||||||
// 取消的事件
|
// // 取消的事件
|
||||||
Navigator.of(context).pop(true);
|
// Navigator.of(context).pop(true);
|
||||||
},
|
// },
|
||||||
child: new Text('取消'))
|
// child: new Text('取消'))
|
||||||
]);
|
// ]);
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 带align的text
|
* 带align的text
|
||||||
|
@ -6,7 +6,6 @@
|
|||||||
* email: zhu.yan@alibaba-inc.com
|
* email: zhu.yan@alibaba-inc.com
|
||||||
* tartget: RaisedButton 的示例
|
* tartget: RaisedButton 的示例
|
||||||
*/
|
*/
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -20,7 +19,7 @@ class PopupMenuButtonDefault extends StatelessWidget {
|
|||||||
final String type;
|
final String type;
|
||||||
|
|
||||||
const PopupMenuButtonDefault(
|
const PopupMenuButtonDefault(
|
||||||
[String this.type = 'default1', bool this.isDisabled = true])
|
[ this.type = 'default1', this.isDisabled = true])
|
||||||
: assert(isDisabled != null),
|
: assert(isDisabled != null),
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -107,7 +106,7 @@ class PopupMenuButtonCustom extends StatelessWidget {
|
|||||||
label: Text(
|
label: Text(
|
||||||
'自定义按钮', style: TextStyle(color: Colors.white),
|
'自定义按钮', style: TextStyle(color: Colors.white),
|
||||||
semanticsLabel: 'FLAT BUTTON'),
|
semanticsLabel: 'FLAT BUTTON'),
|
||||||
// onPressed:(){} // 激活状态按钮
|
onPressed:(){} // 激活状态按钮
|
||||||
),
|
),
|
||||||
// 打开时放置菜单的z坐标。这可以控制菜单下方阴影的大小。
|
// 打开时放置菜单的z坐标。这可以控制菜单下方阴影的大小。
|
||||||
elevation:10.0,
|
elevation:10.0,
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import '../../../../../common/widget_demo.dart';
|
import '../../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
import './demo.dart' as popupMenuButton;
|
import './demo.dart' as popupMenuButton;
|
||||||
@ -37,8 +37,9 @@ const String _titleText2 = """
|
|||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = '/element/Form/Button/PopupMenuButton';
|
static const String routeName = '/element/Form/Button/PopupMenuButton';
|
||||||
final Map<String,String> options = {'defaultSelect': '选项二的内容'};
|
final Map<String,String> options = {'defaultSelect': '选项二的内容'};
|
||||||
@override
|
|
||||||
final _DemoState self = _DemoState();
|
final _DemoState self = _DemoState();
|
||||||
|
|
||||||
|
@override
|
||||||
_DemoState createState() => self;
|
_DemoState createState() => self;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,7 @@ import 'package:flutter/material.dart';
|
|||||||
class RaisedButtonDefault extends StatelessWidget {
|
class RaisedButtonDefault extends StatelessWidget {
|
||||||
final bool isDisabled;
|
final bool isDisabled;
|
||||||
|
|
||||||
const RaisedButtonDefault([bool this.isDisabled = true])
|
const RaisedButtonDefault([ this.isDisabled = true])
|
||||||
: assert(isDisabled != null),
|
: assert(isDisabled != null),
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -39,7 +39,7 @@ class RaisedButtonIconDefault extends StatelessWidget {
|
|||||||
final IconData icon;
|
final IconData icon;
|
||||||
|
|
||||||
const RaisedButtonIconDefault(
|
const RaisedButtonIconDefault(
|
||||||
[bool this.isDisabled = true, IconData this.icon = Icons.add_circle])
|
[ this.isDisabled = true, this.icon = Icons.add_circle])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
Color _randomColor() {
|
Color _randomColor() {
|
||||||
@ -73,10 +73,10 @@ class RaisedButtonCustom extends StatelessWidget {
|
|||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
|
|
||||||
const RaisedButtonCustom(
|
const RaisedButtonCustom(
|
||||||
[String this.txt = '自定义按钮',
|
[ this.txt = '自定义按钮',
|
||||||
Color this.color = Colors.blueAccent,
|
this.color = Colors.blueAccent,
|
||||||
ShapeBorder this.shape,
|
this.shape,
|
||||||
VoidCallback this.onPressed])
|
this.onPressed])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -69,7 +69,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 RaisedButton 按钮
|
* 所有的 RaisedButton 按钮
|
||||||
*/
|
*/
|
||||||
Widget allRaisedButtons(BuildContext context,_DemoState that){
|
Widget allRaisedButtons(BuildContext context,_DemoState that){
|
||||||
@ -130,26 +130,26 @@ Widget allRaisedButtons(BuildContext context,_DemoState that){
|
|||||||
* alert 弹框
|
* alert 弹框
|
||||||
* context:容器的父级
|
* context:容器的父级
|
||||||
* */
|
* */
|
||||||
void _showMessage(String name, BuildContext context) {
|
// void _showMessage(String name, BuildContext context) {
|
||||||
showDialog(
|
// showDialog(
|
||||||
// alert 的父级
|
// // alert 的父级
|
||||||
context: context,
|
// context: context,
|
||||||
builder: (BuildContext context) {
|
// builder: (BuildContext context) {
|
||||||
return AlertDialog(
|
// return AlertDialog(
|
||||||
title: new Text('提示'),
|
// title: new Text('提示'),
|
||||||
content: new Text(name),
|
// content: new Text(name),
|
||||||
actions: <Widget>[
|
// actions: <Widget>[
|
||||||
new FlatButton(
|
// new FlatButton(
|
||||||
// alert 的取消按钮
|
// // alert 的取消按钮
|
||||||
onPressed: () {
|
// onPressed: () {
|
||||||
// 取消的事件
|
// // 取消的事件
|
||||||
Navigator.of(context).pop(true);
|
// Navigator.of(context).pop(true);
|
||||||
},
|
// },
|
||||||
child: new Text('取消'))
|
// child: new Text('取消'))
|
||||||
]);
|
// ]);
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 带align的text
|
* 带align的text
|
||||||
|
@ -16,7 +16,7 @@ import 'package:flutter/material.dart';
|
|||||||
class RawMaterialButtonDefault extends StatelessWidget {
|
class RawMaterialButtonDefault extends StatelessWidget {
|
||||||
final bool isDisabled;
|
final bool isDisabled;
|
||||||
|
|
||||||
const RawMaterialButtonDefault([bool this.isDisabled = true])
|
const RawMaterialButtonDefault([ this.isDisabled = true])
|
||||||
: assert(isDisabled != null),
|
: assert(isDisabled != null),
|
||||||
super();
|
super();
|
||||||
|
|
||||||
@ -39,10 +39,10 @@ class RawMaterialButtonCustom extends StatelessWidget {
|
|||||||
final VoidCallback onPressed;
|
final VoidCallback onPressed;
|
||||||
|
|
||||||
const RawMaterialButtonCustom(
|
const RawMaterialButtonCustom(
|
||||||
[String this.txt = '自定义按钮',
|
[ this.txt = '自定义按钮',
|
||||||
Color this.color = Colors.blueAccent,
|
this.color = Colors.blueAccent,
|
||||||
ShapeBorder this.shape,
|
this.shape,
|
||||||
VoidCallback this.onPressed])
|
this.onPressed])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -58,7 +58,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 RawMaterialButton 按钮
|
* 所有的 RawMaterialButton 按钮
|
||||||
*/
|
*/
|
||||||
Widget allRawMaterialButtons(BuildContext context,_DemoState that){
|
Widget allRawMaterialButtons(BuildContext context,_DemoState that){
|
||||||
@ -102,26 +102,26 @@ Widget allRawMaterialButtons(BuildContext context,_DemoState that){
|
|||||||
* alert 弹框
|
* alert 弹框
|
||||||
* context:容器的父级
|
* context:容器的父级
|
||||||
* */
|
* */
|
||||||
void _showMessage(String name, BuildContext context) {
|
// void _showMessage(String name, BuildContext context) {
|
||||||
showDialog(
|
// showDialog(
|
||||||
// alert 的父级
|
// // alert 的父级
|
||||||
context: context,
|
// context: context,
|
||||||
builder: (BuildContext context) {
|
// builder: (BuildContext context) {
|
||||||
return AlertDialog(
|
// return AlertDialog(
|
||||||
title: new Text('提示'),
|
// title: new Text('提示'),
|
||||||
content: new Text(name),
|
// content: new Text(name),
|
||||||
actions: <Widget>[
|
// actions: <Widget>[
|
||||||
new FlatButton(
|
// new FlatButton(
|
||||||
// alert 的取消按钮
|
// // alert 的取消按钮
|
||||||
onPressed: () {
|
// onPressed: () {
|
||||||
// 取消的事件
|
// // 取消的事件
|
||||||
Navigator.of(context).pop(true);
|
// Navigator.of(context).pop(true);
|
||||||
},
|
// },
|
||||||
child: new Text('取消'))
|
// child: new Text('取消'))
|
||||||
]);
|
// ]);
|
||||||
}
|
// }
|
||||||
);
|
// );
|
||||||
}
|
// }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 带align的text
|
* 带align的text
|
||||||
|
@ -16,7 +16,7 @@ import 'package:flutter/material.dart';
|
|||||||
class CheckboxDefault extends StatefulWidget{
|
class CheckboxDefault extends StatefulWidget{
|
||||||
final int index;
|
final int index;
|
||||||
final parent;
|
final parent;
|
||||||
const CheckboxDefault([this.parent,int this.index = -1]) : super();
|
const CheckboxDefault([this.parent, this.index = -1]) : super();
|
||||||
@override
|
@override
|
||||||
State<StatefulWidget> createState() =>_CheckboxDefault();
|
State<StatefulWidget> createState() =>_CheckboxDefault();
|
||||||
}
|
}
|
||||||
@ -47,7 +47,7 @@ class CheckboxSelect extends StatelessWidget {
|
|||||||
final widget;
|
final widget;
|
||||||
final parent;
|
final parent;
|
||||||
|
|
||||||
const CheckboxSelect([this.widget,this.parent,int this.index = -1])
|
const CheckboxSelect([this.widget,this.parent, this.index = -1])
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -8,7 +8,7 @@
|
|||||||
* 对应文档地址:https://docs.flutter.io/flutter/material/Checkbox-class.html
|
* 对应文档地址:https://docs.flutter.io/flutter/material/Checkbox-class.html
|
||||||
*/
|
*/
|
||||||
import '../../../../../common/widget_demo.dart';
|
import '../../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
@ -54,7 +54,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 Checkbox 按钮
|
* 所有的 Checkbox 按钮
|
||||||
*/
|
*/
|
||||||
Widget allCheckboxs(BuildContext context,_DemoState that){
|
Widget allCheckboxs(BuildContext context,_DemoState that){
|
||||||
|
@ -7,7 +7,6 @@
|
|||||||
* tartget: CheckboxListTile 的示例
|
* tartget: CheckboxListTile 的示例
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -7,9 +7,8 @@
|
|||||||
* tartget: CheckboxListTile 的示例
|
* tartget: CheckboxListTile 的示例
|
||||||
*/
|
*/
|
||||||
import '../../../../../common/widget_demo.dart';
|
import '../../../../../common/widget_demo.dart';
|
||||||
import 'dart:math';
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/scheduler.dart';
|
|
||||||
|
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
import 'package:flutter_markdown/flutter_markdown.dart';
|
||||||
import './demo.dart' as CheckboxListTileDemo;
|
import './demo.dart' as CheckboxListTileDemo;
|
||||||
@ -38,7 +37,7 @@ const String _CheckboxListTileText2 =
|
|||||||
|
|
||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = '/element/Form/Checkbox/CheckboxListTile';
|
static const String routeName = '/element/Form/Checkbox/CheckboxListTile';
|
||||||
bool valBool = true;
|
final bool valBool = true;
|
||||||
@override
|
@override
|
||||||
_DemoState createState() => _DemoState();
|
_DemoState createState() => _DemoState();
|
||||||
}
|
}
|
||||||
@ -55,7 +54,7 @@ class _DemoState extends State<Demo> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* 所有的 CheckboxListTile widget
|
* 所有的 CheckboxListTile widget
|
||||||
* context: 运行上下文
|
* context: 运行上下文
|
||||||
* that: 指向有状态的 StatefulWidget
|
* that: 指向有状态的 StatefulWidget
|
||||||
|
@ -10,48 +10,47 @@
|
|||||||
|
|
||||||
import '../../../../../common/widget_demo.dart';
|
import '../../../../../common/widget_demo.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import './text_field_demo.dart' ;
|
import './text_field_demo.dart';
|
||||||
|
|
||||||
|
const String _textFieldText0 = """### **简介**
|
||||||
const String _textFieldText0 =
|
> TextField 最常用的文本输入widget
|
||||||
"""### **简介**
|
- 该 widget 作为文本输入框,可以接收用户以屏幕按键或者键盘输入的文本信息,该信息可以用于消息传递,搜索体验等
|
||||||
> Text Field “文本字段”
|
- 用户修改文本信息时,Onchange会被调用,获取到最新的文本信息
|
||||||
- 文本字段允许用户输入文本,无论是硬件键盘还是屏幕键盘。
|
- 已知用户输入的字段文本输入完毕时(例如,通过按软键盘上的按钮确认输入完毕),该widget会调用onSubmitted回调
|
||||||
- 每当用户更改字段中的文本时,文本字段就会调用Onchange的回调。
|
|
||||||
- 如果用户指示他们在字段中输入完成(例如,通过按软键盘上的按钮),则文本字段调用onSubmitted回调。
|
|
||||||
""";
|
""";
|
||||||
|
|
||||||
const String _textFieldText1 =
|
const String _textFieldText1 = """### **基本用法**
|
||||||
"""### **基本用法**
|
> 参数控制默认的按钮和禁用按钮
|
||||||
> 参数的默认的按钮和禁用按钮
|
- 默认情况下,TextField 下方有一个下划线进行修饰。
|
||||||
- 默认情况下,文本字段具有在文本字段下方绘制分隔符的修饰。
|
- 您可以使用decoration属性来控制该widget样式,例如通过添加标签或图标。如果将decoration属性设置为空,则将完全删除装饰,包括装饰引入的额外填充,以节省标签的空间。
|
||||||
- 您可以使用装饰属性来控制装饰,例如通过添加标签或图标。如果将装饰属性设置为空,则将完全删除装饰,包括装饰引入的额外填充,以节省标签的空间。
|
- 如果decoration属性是非null(这是默认的),文本字段需要它的父类是一个Material widget。当文本字段被点击时,会出发被点击的效果。
|
||||||
- 如果装饰是非null(这是默认的),文本字段需要它的祖先之一是一个材质widget。当文本字段被敲击时,墨水溅到材料上的油漆被触发。
|
- 若要将TextField和其他FormFild集成到Form中,请考虑使用TeTFrimeField。""";
|
||||||
- 若要将TeXFieldField集成到其他FieldFieldWrices窗体中,请考虑使用TeTFrimeField。""";
|
|
||||||
|
|
||||||
const String _textFieldText2 =
|
const String _textFieldText2 = """### **进阶用法**
|
||||||
"""### **进阶用法**
|
> 实现稍微复杂点的效果,TextField 的输入以数字优先,为输入框做一些其他的效果,如提示文字,icon、标签文字等
|
||||||
> 实现稍微复杂点的效果,键盘就变成了数字优先,为输入框做一些其他的效果,如提示文字,icon、标签文字等
|
|
||||||
- 增加一个keyboardType属性,把keyboardType设置为 TextInputType.number ,让TextField获得焦点的时候弹出的键盘就变成了数字优先。
|
- 增加一个keyboardType属性,把keyboardType设置为 TextInputType.number ,让TextField获得焦点的时候弹出的键盘就变成了数字优先。
|
||||||
- 新增decoration属性,设置相关属性,可以发现当我们的TextField获得焦点时,图标会自动变色,提示文字会自动上移。
|
- 新增decoration属性,设置相关属性,可以发现当我们的TextField获得焦点时,图标会自动变色,提示文字会自动上移。
|
||||||
- onChanged是每次输入框内每次文字变更触发的回调,onSubmitted是用户提交而触发的回调。
|
- onChanged是输入框内每次文字变更触发的回调方法,onSubmitted是用户提交而触发的回调方法。
|
||||||
- 每当用户改变输入框内的文字,都会在控制台输出现在的字符串.与onSubmitted用法相同。
|
- 每当用户改变输入框内的文字,都会在控制台输出现在的字符串.与onSubmitted用法相同。
|
||||||
""";
|
""";
|
||||||
|
|
||||||
class Demo extends StatefulWidget {
|
class Demo extends StatefulWidget {
|
||||||
static const String routeName = 'elements/Form/Input/TextField';
|
static const String routeName = 'elements/Form/Input/TextField';
|
||||||
|
|
||||||
@override
|
@override
|
||||||
_DemoState createState() => _DemoState();
|
_DemoState createState() => _DemoState();
|
||||||
}
|
}
|
||||||
|
|
||||||
class _DemoState extends State<Demo> {
|
class _DemoState extends State<Demo> {
|
||||||
String buttonShapeType = 'border'; // 边框类型
|
String buttonShapeType = 'border'; // 边框类型
|
||||||
void setButtonShapeType(){
|
void setButtonShapeType() {
|
||||||
String _buttonShapeType = (buttonShapeType == 'border') ? 'radius' : 'border';
|
String _buttonShapeType =
|
||||||
this.setState((){
|
(buttonShapeType == 'border') ? 'radius' : 'border';
|
||||||
|
this.setState(() {
|
||||||
buttonShapeType = _buttonShapeType;
|
buttonShapeType = _buttonShapeType;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
@ -68,4 +67,3 @@ class _DemoState extends State<Demo> {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,7 +9,6 @@
|
|||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import '../../../../../common/widget_demo.dart';
|
import '../../../../../common/widget_demo.dart';
|
||||||
import 'package:flutter_markdown/flutter_markdown.dart';
|
|
||||||
import 'demo.dart';
|
import 'demo.dart';
|
||||||
const content1 = """
|
const content1 = """
|
||||||
# Radio
|
# Radio
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
|
|
||||||
/**
|
/*
|
||||||
* Author: xiaojia.dxj
|
* Author: xiaojia.dxj
|
||||||
* Date: 2018/11/22
|
* Date: 2018/11/22
|
||||||
* Email: xiaojia.dxj@alibaba-inc.com
|
* Email: xiaojia.dxj@alibaba-inc.com
|
||||||
@ -14,7 +14,7 @@ class AlignAlignment extends StatelessWidget {
|
|||||||
final Alignment status;
|
final Alignment status;
|
||||||
final String dec;
|
final String dec;
|
||||||
|
|
||||||
const AlignAlignment(Alignment this.status, String this.dec) : super();
|
const AlignAlignment( this.status, this.dec) : super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
@ -39,8 +39,8 @@ class AlignFactor extends StatelessWidget {
|
|||||||
final double hFactor;
|
final double hFactor;
|
||||||
final String dec;
|
final String dec;
|
||||||
|
|
||||||
const AlignFactor(Alignment this.status, double this.wFactor,
|
const AlignFactor( this.status, this.wFactor,
|
||||||
double this.hFactor, String this.dec)
|
this.hFactor, this.dec)
|
||||||
: super();
|
: super();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -41,12 +41,12 @@ class _DemoState extends State<Demo> {
|
|||||||
contentList: [
|
contentList: [
|
||||||
_flatText0,
|
_flatText0,
|
||||||
_flatText1,
|
_flatText1,
|
||||||
_AlignCreate()
|
_alignCreate()
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Column _AlignCreate() {
|
Column _alignCreate() {
|
||||||
return new Column(
|
return new Column(
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
SizedBox(height: 10.0),
|
SizedBox(height: 10.0),
|
||||||
|
@ -11,7 +11,7 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'crossAxis',
|
title: 'crossAxis',
|
||||||
child: Column(
|
contentList: [Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
Container(
|
Container(
|
||||||
@ -39,7 +39,7 @@ class _DemoState extends State<Demo> {
|
|||||||
margin: const EdgeInsets.all(10.0),
|
margin: const EdgeInsets.all(10.0),
|
||||||
),
|
),
|
||||||
],
|
],
|
||||||
),
|
)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/widgets/Padding-class.html',
|
docUrl: 'https://docs.flutter.io/flutter/widgets/Padding-class.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -37,7 +37,7 @@ class _DemoState extends State<Demo> {
|
|||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return WidgetDemo(
|
return WidgetDemo(
|
||||||
title: 'flipAxis',
|
title: 'flipAxis',
|
||||||
child: Flex(
|
contentList: [Flex(
|
||||||
direction: _direction,
|
direction: _direction,
|
||||||
mainAxisAlignment: MainAxisAlignment.center,
|
mainAxisAlignment: MainAxisAlignment.center,
|
||||||
mainAxisSize: MainAxisSize.max,
|
mainAxisSize: MainAxisSize.max,
|
||||||
@ -72,7 +72,7 @@ class _DemoState extends State<Demo> {
|
|||||||
onPressed: _changeDirection,
|
onPressed: _changeDirection,
|
||||||
)
|
)
|
||||||
],
|
],
|
||||||
),
|
)],
|
||||||
docUrl: 'https://docs.flutter.io/flutter/painting/flipAxis.html',
|
docUrl: 'https://docs.flutter.io/flutter/painting/flipAxis.html',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,24 +0,0 @@
|
|||||||
import 'package:flutter/material.dart';
|
|
||||||
import '../../../../model/widget.dart';
|
|
||||||
|
|
||||||
import './crossAxis/index.dart' as crossAxis;
|
|
||||||
import './flipAxis/index.dart' as flipAxis;
|
|
||||||
import './mainAxis/index.dart' as mainAxis;
|
|
||||||
|
|
||||||
List<WidgetPoint> widgetPoints = [
|
|
||||||
WidgetPoint(
|
|
||||||
name: 'crossAxis',
|
|
||||||
routerName: crossAxis.Demo.routeName,
|
|
||||||
buildRouter: (BuildContext context) => crossAxis.Demo(),
|
|
||||||
),
|
|
||||||
WidgetPoint(
|
|
||||||
name: 'flipAxis',
|
|
||||||
routerName: flipAxis.Demo.routeName,
|
|
||||||
buildRouter: (BuildContext context) => flipAxis.Demo(),
|
|
||||||
),
|
|
||||||
WidgetPoint(
|
|
||||||
name: 'mainAxis',
|
|
||||||
routerName: mainAxis.Demo.routeName,
|
|
||||||
buildRouter: (BuildContext context) => mainAxis.Demo(),
|
|
||||||
),
|
|
||||||
];
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user