This commit is contained in:
yifeng.yl
2019-01-08 20:39:13 +08:00
parent 383819e280
commit 2e9702ec7b
242 changed files with 13523 additions and 654 deletions

View File

@ -0,0 +1,84 @@
/**
* Created with Android Studio.
* User: ryan
* Date: 2019/1/6
* Time: 下午7:33
* email: sanfann@alibaba-inc.com
* tartget: TabBar 的示例
*/
import 'package:flutter/material.dart';
class ScaffoldStateDemo extends StatefulWidget {
const ScaffoldStateDemo() : super();
@override
State<StatefulWidget> createState() => _ScaffoldStateDemo();
}
/*
* AppBar 默认的实例,有状态
* */
class _ScaffoldStateDemo extends State with SingleTickerProviderStateMixin {
int count = 0;
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
// 如果省略了 leading ,但 AppBar 在带有 Drawer 的 Scaffold 中,则会插入一个 button 以打开 Drawer。
// 否则,如果最近的 Navigator 具有任何先前的 router 则会插入BackButton。
// 这种行为可以通过设置来关闭automaticallyImplyLeading 为false。在这种情况下空的 leading widget 将导致 middle/title widget 拉伸开始。
return new SizedBox(
height: 500,
child:new Scaffold(
key:_scaffoldKey,
appBar: AppBar(
title: Text('ScaffoldState Demo'),
),
body: Center(
child: Column(
children: <Widget>[
RaisedButton(
child: Text('点我试试呼出SnackBar&Drawer'),
onPressed: () {
_scaffoldKey.currentState.openDrawer();
_scaffoldKey.currentState.showSnackBar(const SnackBar(
content: Text("我是通过ScaffoldState的方式呼出的SnackBar.")
));
},
)
],
),
),
drawer: Drawer(
child: Column(
children: <Widget>[
const UserAccountsDrawerHeader(
accountName: Text('Peter Widget'),
accountEmail: Text('peter.widget@example.com'),
currentAccountPicture: CircleAvatar(
backgroundImage: AssetImage(
'people/square/peter.png',
package: 'flutter_gallery_assets',
),
),
margin: EdgeInsets.zero,
),
// MediaQuery.removePadding(
// context: context,
// // DrawerHeader consumes top MediaQuery padding.
// removeTop: true,
// child: const ListTile(
// leading: Icon(Icons.payment),
// title: Text('Placeholder'),
// ),
// ),
],
),
),
)
);
}
}

View File

@ -0,0 +1,48 @@
/**
* Created with Android Studio.
* User: 三帆
* Date: 07/01/2019
* Time: 10:26
* email: sanfan.hx@alibaba-inc.com
* tartget: xxx
*/
import '../../../../common/widget_demo.dart';
import 'package:flutter/material.dart';
import 'demo.dart';
const String _Text0 = """
### **简介**
> Scaffold的State对象
通常用来控制**SnackBars**和**BottomSheets**和**Drawer**的显示与隐藏.
### **基本用法**
- 通过为Scaffold定义key属性, 声明_scaffoldState, 通过_scaffoldState直接调用scaffoldState方法
- 当组件无法直接为Scaffold定义key属性时, 可以通过 **Context**与**Scaffold.of**获取父级scaffoldState
""";
class Demo extends StatefulWidget {
static const String routeName = '/components/Scaffold/ScaffoldState';
@override
_DemoState createState() => _DemoState();
}
class _DemoState extends State<Demo> {
@override
Widget build(BuildContext context) {
return WidgetDemo(
title: 'ScaffoldState',
codeUrl: 'components/Scaffold/ScaffoldState/demo.dart',
contentList: [
_Text0,
ScaffoldStateDemo()
],
docUrl: 'https://docs.flutter.io/flutter/material/ScaffoldState-class.html',
);
}
}