mirror of
https://github.com/alibaba/flutter-go.git
synced 2025-08-06 09:01:00 +08:00
add file
This commit is contained in:
84
lib/widgets/components/Scaffold/ScaffoldState/demo.dart
Normal file
84
lib/widgets/components/Scaffold/ScaffoldState/demo.dart
Normal 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'),
|
||||
// ),
|
||||
// ),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
)
|
||||
|
||||
);
|
||||
}
|
||||
}
|
48
lib/widgets/components/Scaffold/ScaffoldState/index.dart
Normal file
48
lib/widgets/components/Scaffold/ScaffoldState/index.dart
Normal 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',
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user