修改main.dart
import 'package:flutter/material.dart';
import 'package:nihao_flutter/demo/form_demo.dart';
import 'package:nihao_flutter/demo/navigator_demo.dart';
import 'package:nihao_flutter/demo/home_demo.dart';
import 'package:nihao_flutter/demo/simple_dialog_demo.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
debugShowCheckedModeBanner: false,
// home: NavigatorDemo(),
initialRoute: '/dialog',
routes: {
'/':(context)=>HomeDemo(),
'/form':(context)=>FormDemo(),
'/dialog':(context)=>SimpleDialogDemo(),
},
theme: ThemeData(
primarySwatch: Colors.yellow,
highlightColor: Color.fromRGBO(255, 255, 255, 0.5),
splashColor: Colors.red),
);
}
}
simle_dialog_demo.dart
简单的显示和关闭
import 'package:flutter/material.dart';
class SimpleDialogDemo extends StatefulWidget {
@override
_SimpleDialogDemoState createState() => _SimpleDialogDemoState();
}
class _SimpleDialogDemoState extends State<SimpleDialogDemo> {
_openSimpleDialog() {
showDialog(
context: context,
builder: (BuildContext context) {
return SimpleDialog(
title: Text('simpleDialog'),
children: <Widget>[
SimpleDialogOption(
child: Text('Options A'),
onPressed: (){
// 关闭对话框
Navigator.pop(context);
},
),
SimpleDialogOption(
child: Text('Options B'),
onPressed: (){
// 关闭对话框
Navigator.pop(context);
},
),
SimpleDialogOption(
child: Text('Options C'),
onPressed: (){
// 关闭对话框
Navigator.pop(context);
},
),
],
);
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SimpleDialogDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.format_list_numbered),
onPressed: _openSimpleDialog,
),
);
}
}
获取simpledialog中的数值
import 'package:flutter/material.dart';
import 'dart:async';
// 获取选中的数值
enum Option { A, B, C }
class SimpleDialogDemo extends StatefulWidget {
@override
_SimpleDialogDemoState createState() => _SimpleDialogDemoState();
}
class _SimpleDialogDemoState extends State<SimpleDialogDemo> {
String _chose = "nothing";
Future _openSimpleDialog() async {
final option = await showDialog(
context: context,
builder: (BuildContext context) {
return SimpleDialog(
title: Text('simpleDialog'),
children: <Widget>[
SimpleDialogOption(
child: Text('Options A'),
onPressed: () {
// 关闭对话框
Navigator.pop(context, Option.A);
},
),
SimpleDialogOption(
child: Text('Options B'),
onPressed: () {
// 关闭对话框
Navigator.pop(context, Option.B);
},
),
SimpleDialogOption(
child: Text('Options C'),
onPressed: () {
// 关闭对话框
Navigator.pop(context, Option.C);
},
),
],
);
});
switch (option) {
case Option.A:
setState(() {
_chose = "A";
});
break;
case Option.B:
setState(() {
_chose = "B";
});
break;
case Option.C:
setState(() {
_chose = "C";
});
break;
default:
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SimpleDialogDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('你选择了:$_chose'),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[],
)
],
),
),
floatingActionButton: FloatingActionButton(
child: Icon(Icons.format_list_numbered),
onPressed: _openSimpleDialog,
),
);
}
}
AlertDialog
import 'package:flutter/material.dart';
import 'dart:async';
class AlertDialogDemo extends StatefulWidget {
@override
_AlertDialogDemoState createState() => _AlertDialogDemoState();
}
class _AlertDialogDemoState extends State<AlertDialogDemo> {
_openAlertDialog(){
showDialog(
context: context,
// 空白地方点击不允许关闭
barrierDismissible: false,
builder: (BuildContext context){
return AlertDialog(
title: Text('ALertDialog'),
content: Text('Are you sure about this?'),
actions: <Widget>[
FlatButton(
child: Text('Cancel'),
onPressed: (){
Navigator.pop(context);
},
),
FlatButton(
child: Text('OK'),
onPressed: (){
Navigator.pop(context);
},
)
],
);
}
);
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AlertDialogDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
child: Text('Open AlertDialog'),
onPressed: _openAlertDialog,
)
],
)
],
),
),
);
}
}
获取alert的值
import 'package:flutter/material.dart';
import 'dart:async';
enum Action {
Ok,
Cancel,
}
class AlertDialogDemo extends StatefulWidget {
@override
_AlertDialogDemoState createState() => _AlertDialogDemoState();
}
class _AlertDialogDemoState extends State<AlertDialogDemo> {
String _choice = 'Nothing';
Future _openAlertDialog() async {
final action = await showDialog(
context: context,
// 空白地方点击不允许关闭
barrierDismissible: false,
builder: (BuildContext context) {
return AlertDialog(
title: Text('ALertDialog'),
content: Text('Are you sure about this?'),
actions: <Widget>[
FlatButton(
child: Text('Cancel'),
onPressed: () {
Navigator.pop(context, Action.Cancel);
},
),
FlatButton(
child: Text('OK'),
onPressed: () {
Navigator.pop(context, Action.Ok);
},
)
],
);
});
switch (action) {
case Action.Ok:
setState(() {
_choice = 'OK';
});
break;
case Action.Cancel:
setState(() {
_choice = 'Canel';
});
break;
default:
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('AlertDialogDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Text('你选择了:$_choice'),
SizedBox(
height: 16.0,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
child: Text('Open AlertDialog'),
onPressed: _openAlertDialog,
)
],
)
],
),
),
);
}
}
BottomSheet 底部滑动窗口
import 'package:flutter/material.dart';
class BottomSheetDemo extends StatefulWidget {
@override
_BottomSheetDemoState createState() => _BottomSheetDemoState();
}
class _BottomSheetDemoState extends State<BottomSheetDemo> {
final _boottomSheetScaffoldKey = GlobalKey<ScaffoldState>();
_openBottomSheet() {
_boottomSheetScaffoldKey
.currentState
.showBottomSheet((BuildContext context) {
return BottomAppBar(
child: Container(
height: 90.0,
width: double.infinity,
padding: EdgeInsets.all(16.0),
child: Row(
children: <Widget>[
Icon(
Icons.pause_circle_outline,
),
SizedBox(width: 16.0),
Text('01:30 / 03:30'),
Expanded(
child: Text('Fix you - Coldplay', textAlign: TextAlign.right),
)
],
),
),
);
});
}
_closeBottomSheet() {
Navigator.pop(context);
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _boottomSheetScaffoldKey,
appBar: AppBar(
title: Text('BottomSheetDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton(
child: Text('Open BottomSheet'),
onPressed: _openBottomSheet,
),
FlatButton(
child: Text('Close BottomSheet'),
onPressed: _closeBottomSheet,
)
],
)
],
),
),
);
}
}
BottomSheet 对话框形式底部滑动窗口
这种bottomSheet显示出来以后就不能用别的东西了 一般分享功能都是用的这个
import 'package:flutter/material.dart';
class BottomSheetDemo extends StatefulWidget {
@override
_BottomSheetDemoState createState() => _BottomSheetDemoState();
}
class _BottomSheetDemoState extends State<BottomSheetDemo> {
final _boottomSheetScaffoldKey = GlobalKey<ScaffoldState>();
_openBottomSheet() {
_boottomSheetScaffoldKey.currentState
.showBottomSheet((BuildContext context) {
return BottomAppBar(
child: Container(
height: 90.0,
width: double.infinity,
padding: EdgeInsets.all(16.0),
child: Row(
children: <Widget>[
Icon(
Icons.pause_circle_outline,
),
SizedBox(width: 16.0),
Text('01:30 / 03:30'),
Expanded(
child: Text('Fix you - Coldplay', textAlign: TextAlign.right),
)
],
),
),
);
});
}
Future _openModalBottomSheet() async{
final option=await showModalBottomSheet(
context: context,
builder: (BuildContext context) {
return Container(
height: 200.0,
child: Column(
children: <Widget>[
ListTile(
title: Text('Option A'),
onTap: (){
Navigator.pop(context,"A");
},
),
ListTile(
title: Text('Option B'),
onTap: (){
Navigator.pop(context,"B");
},
),
ListTile(
title: Text('Option C'),
onTap: (){
Navigator.pop(context,"C");
},
),
],
),
);
});
debugPrint(option);
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: _boottomSheetScaffoldKey,
appBar: AppBar(
title: Text('BottomSheetDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
FlatButton(
child: Text('Open BottomSheet'),
onPressed: _openBottomSheet,
),
FlatButton(
// 对话框形式底部滑动窗口
child: Text('Modal BottomSheet'),
onPressed: _openModalBottomSheet,
),
],
)
],
),
),
);
}
}
SnackBar操作提示栏
import 'package:flutter/material.dart';
class SnackBarDemo extends StatefulWidget {
@override
_SnackBarDemoState createState() => _SnackBarDemoState();
}
class _SnackBarDemoState extends State<SnackBarDemo> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('SnackBarDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
SnackBarButton()
],
)
],
),
),
);
}
}
class SnackBarButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return FlatButton(
child: Text('Open SnackBar'),
onPressed: (){
Scaffold.of(context).showSnackBar(
SnackBar(
content: Text('Processing....'),
action: SnackBarAction(
label: 'Ok',
onPressed: ()
{debugPrint('OK');},
),
)
);
},
);
}
}
ExpansionPanel面板的收缩
import 'package:flutter/material.dart';
class ExpansionPanelDemo extends StatefulWidget {
@override
_ExpansionPanelDemoState createState() => _ExpansionPanelDemoState();
}
class _ExpansionPanelDemoState extends State<ExpansionPanelDemo> {
// 面板不会自动收缩的 所以使用这个数值来控制自动收缩
bool _isExpanded=false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ExpansionPanelDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 点击监听
ExpansionPanelList(
expansionCallback: (int panelIndex,bool isExpanded){
setState(() {
_isExpanded=!isExpanded;
});
},
children: [
ExpansionPanel(
headerBuilder: (BuildContext context,bool isExpanded){
return Container(
padding: EdgeInsets.all(16.0),
child: Text(
'Panel A',
style: Theme.of(context).textTheme.title,
),
);
},
body:Container(
padding: EdgeInsets.all(16.0),
width: double.infinity,
child: Text('Content for Panel A'),
),
// 面板的 默认展开和关闭
isExpanded: _isExpanded,
)
],
)
],
),
),
);
}
}
ExpansionPanel 面板列表项目
import 'package:flutter/material.dart';
class ExpansionPanelItem{
final String headerText;
final Widget body;
bool isExpandede;
ExpansionPanelItem({
this.headerText,
this.body,
this.isExpandede,
});
}
class ExpansionPanelDemo extends StatefulWidget {
@override
_ExpansionPanelDemoState createState() => _ExpansionPanelDemoState();
}
class _ExpansionPanelDemoState extends State<ExpansionPanelDemo> {
// 面板不会自动收缩的 所以使用这个数值来控制自动收缩
List<ExpansionPanelItem> _expansionPanelItems;
@override
void initState() {
super.initState();
_expansionPanelItems=<ExpansionPanelItem>[
ExpansionPanelItem(
headerText: 'Panel A',
body: Container(
padding: EdgeInsets.all(16.0),
width: double.infinity,
child: Text('Content for Panel A.'),
),
isExpandede: false,
),
ExpansionPanelItem(
headerText: 'Panel B',
body: Container(
padding: EdgeInsets.all(16.0),
width: double.infinity,
child: Text('Content for Panel B.'),
),
isExpandede: false,
),
ExpansionPanelItem(
headerText: 'Panel C',
body: Container(
padding: EdgeInsets.all(16.0),
width: double.infinity,
child: Text('Content for Panel C.'),
),
isExpandede: false,
),
];
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('ExpansionPanelDemo'),
elevation: 0.0,
),
body: Container(
padding: EdgeInsets.all(16.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
// 点击监听
ExpansionPanelList(
expansionCallback: (int panelIndex,bool isExpanded){
setState(() {
_expansionPanelItems[panelIndex].isExpandede=!isExpanded;
});
},
children:_expansionPanelItems.map(
(ExpansionPanelItem item){
return ExpansionPanel(
isExpanded: item.isExpandede,
body: item.body,
headerBuilder: (BuildContext context,bool isExpanded){
return Container(
padding: EdgeInsets.all(16.0),
child: Text(
item.headerText,
style: Theme.of(context).textTheme.title,
),
);
}
);
}
).toList(),
)
],
),
),
);
}
}
main代码
import 'package:flutter/material.dart';
import 'package:flutter_app/home/home.dart';
import 'demo/alert_dialog_demo.dart';
import 'demo/btootem_sheet_demo.dart';
import 'demo/expansion_panel_demo.dart';
import 'demo/form_demo.dart';
import 'demo/navigator_demo.dart';
import 'demo/page_demo.dart';
import 'demo/simple_dialog_demo.dart';
import 'demo/snack_bar_demo.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
// TODO: implement build
return MaterialApp(
debugShowCheckedModeBanner: false,
// home: NavigatorDemo(),
initialRoute: '/expansion_panel',
routes: {
'/': (context) => Home(),
'/form': (context) => FormDemo(),
'/dialog': (context) => SimpleDialogDemo(),
'/alert_dialog': (context) => AlertDialogDemo(),
'/bottom_sheet': (context) => BottomSheetDemo(),
'/snack_bar': (context) => SnackBarDemo(),
'/expansion_panel': (context) => ExpansionPanelDemo(),
},
theme: ThemeData(
primarySwatch: Colors.yellow,
highlightColor: Color.fromRGBO(255, 255, 255, 0.5),
splashColor: Colors.white70),
);
}
}