文章目录
appBar 返回按钮4 Checkbox:复选框5 CheckboxListTile:带标签与图标的复选框6 Radio:单选按钮7 RadioListTile:带标签与图标的单选按钮8 Switch:开关9 SwitchListTile:带标签与图标的开关10 Slider:滑动选择器11 安装第三方包(演示安装 Intl 包)12 显示格式化日期13 showDatePicker:选择日期showDatePicker:获取选择的日期15 showTimePicker:时间选择器16 Future:异步程序
appBar 返回按钮
Scaffold 设置了appBar,就会自动添加返回按钮
4 Checkbox:复选框
import
'package:flutter/material.dart';
class CheckBoxDemo extends StatefulWidget
{
CheckBoxDemo({Key key
}) : super(key
: key
);
@override
_CheckBoxDemoState
createState() => _CheckBoxDemoState();
}
class _CheckBoxDemoState extends State
<CheckBoxDemo
> {
bool _checkBoxItemA
=true
;
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('CheckBoxDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Checkbox(
value
: _checkBoxItemA
,
onChanged
: (value
){
setState(() {
_checkBoxItemA
=value
;
});
},
activeColor
:Colors
.yellow
,
)
],
)
],
),
),
);
}
}
5 CheckboxListTile:带标签与图标的复选框
import
'package:flutter/material.dart';
class CheckBoxDemo extends StatefulWidget
{
CheckBoxDemo({Key key
}) : super(key
: key
);
@override
_CheckBoxDemoState
createState() => _CheckBoxDemoState();
}
class _CheckBoxDemoState extends State
<CheckBoxDemo
> {
bool _checkBoxItemA
=true
;
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('CheckBoxDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
CheckboxListTile(
value
: _checkBoxItemA
,
onChanged
: (value
){
setState(() {
_checkBoxItemA
=value
;
});
},
title
: Text('Checkbox Item A'),
subtitle
: Text('Description'),
secondary
:Icon(Icons
.bookmark
) ,
selected
: _checkBoxItemA
,
),
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
],
)
],
),
),
);
}
}
6 Radio:单选按钮
import
'package:flutter/material.dart';
class RadioDemo extends StatefulWidget
{
RadioDemo({Key key
}) : super(key
: key
);
@override
_RadioDemo
createState() => _RadioDemo();
}
class _RadioDemo extends State
<RadioDemo
> {
int _radioGroupA
=0;
void _handleRadioValueChanged(int value
){
setState(() {
_radioGroupA
=value
;
});
}
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('RadioDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Radio(
value
: 0,
groupValue
: _radioGroupA
,
onChanged
: _handleRadioValueChanged
,
activeColor
: Colors
.black
,
),
Radio(
value
: 1,
groupValue
: _radioGroupA
,
onChanged
: _handleRadioValueChanged
,
activeColor
: Colors
.black
,
)
],
)
],
),
),
);
}
}
7 RadioListTile:带标签与图标的单选按钮
import
'package:flutter/material.dart';
class RadioDemo extends StatefulWidget
{
RadioDemo({Key key
}) : super(key
: key
);
@override
_RadioDemo
createState() => _RadioDemo();
}
class _RadioDemo extends State
<RadioDemo
> {
int _radioGroupA
=0;
void _handleRadioValueChanged(int value
){
setState(() {
_radioGroupA
=value
;
});
}
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('RadioDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Text('RadioGroupValue:$_radioGroupA'),
SizedBox(height
:32.0),
RadioListTile(
value
: 0,
groupValue
: _radioGroupA
,
onChanged
: _handleRadioValueChanged
,
title
: Text('Options A'),
subtitle
: Text('Description'),
secondary
: Icon(Icons
.filter_1
),
selected
: _radioGroupA
==0,
),
RadioListTile(
value
: 1,
groupValue
: _radioGroupA
,
onChanged
: _handleRadioValueChanged
,
title
: Text('Options B'),
subtitle
: Text('Description'),
secondary
: Icon(Icons
.filter_2
),
selected
: _radioGroupA
==1,
),
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
],
)
],
),
),
);
}
}
8 Switch:开关
import
'package:flutter/material.dart';
class SwitchDemo extends StatefulWidget
{
SwitchDemo({Key key
}) : super(key
: key
);
@override
_SwitchDemo
createState() => _SwitchDemo();
}
class _SwitchDemo extends State
<SwitchDemo
> {
bool _switchItemA
=false
;
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('RadioDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Text(_switchItemA
?'😀':'😔'),
Switch(
value
: _switchItemA
,
onChanged
: (value
){
setState(() {
_switchItemA
=value
;
});
}
)
],
)
],
),
),
);
}
}
9 SwitchListTile:带标签与图标的开关
import
'package:flutter/material.dart';
class SwitchDemo extends StatefulWidget
{
SwitchDemo({Key key
}) : super(key
: key
);
@override
_SwitchDemo
createState() => _SwitchDemo();
}
class _SwitchDemo extends State
<SwitchDemo
> {
bool _switchItemA
=false
;
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('RadioDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
SwitchListTile(
value
: _switchItemA
,
onChanged
: (value
){
setState(() {
_switchItemA
=value
;
});
},
title
: Text('Switch Item A'),
subtitle
: Text('Description'),
secondary
: Icon(_switchItemA
?Icons
.visibility
:Icons
.visibility_off
),
selected
: _switchItemA
,
) ,
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
],
)
],
),
),
);
}
}
10 Slider:滑动选择器
import
'package:flutter/material.dart';
class SliderDemo extends StatefulWidget
{
@override
_SliderDemoState
createState() => _SliderDemoState();
}
class _SliderDemoState extends State
<SliderDemo
> {
double _sliderItemA
= 0.0;
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('SliderDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Slider(
value
: _sliderItemA
,
onChanged
: (value
) {
setState(() {
_sliderItemA
= value
;
});
},
activeColor
: Theme
.of(context
).accentColor
,
inactiveColor
: Theme
.of(context
).accentColor
.withOpacity(0.3),
min
: 0.0,
max
: 10.0,
divisions
: 10,
label
: '${_sliderItemA.toInt()}',
),
],
),
SizedBox(height
: 16.0,),
Text('SliderValue: $_sliderItemA'),
],
),
)
);
}
}
11 安装第三方包(演示安装 Intl 包)
搜索包,打开,找到版本号
点击运行会自动安装。
12 显示格式化日期
import
'package:flutter/material.dart';
import
'package:intl/intl.dart';
class DateTimeDemo extends StatefulWidget
{
DateTimeDemo({Key key
}) : super(key
: key
);
@override
_DateTimeDemo
createState() => _DateTimeDemo();
}
class _DateTimeDemo extends State
<DateTimeDemo
> {
final DateTime selectedDate
=DateTime
.now();
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('DateTimeDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
InkWell(
onTap
:(){
},
child
: Row(
children
:<Widget
>[
Text(DateFormat
.yMMMd().format(selectedDate
)),
Icon(Icons
.arrow_drop_down
),
]
),
),
],
)
],
),
),
);
}
}
13 showDatePicker:选择日期
import
'package:flutter/material.dart';
import
'package:intl/intl.dart';
class DateTimeDemo extends StatefulWidget
{
DateTimeDemo({Key key
}) : super(key
: key
);
@override
_DateTimeDemo
createState() => _DateTimeDemo();
}
class _DateTimeDemo extends State
<DateTimeDemo
> {
final DateTime selectedDate
=DateTime
.now();
_selectDate(){
showDatePicker(
context
: context
,
initialDate
: selectedDate
,
firstDate
: DateTime(1900),
lastDate
: DateTime(2100)
);
}
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('DateTimeDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
InkWell(
onTap
:_selectDate
,
child
: Row(
children
:<Widget
>[
Text(DateFormat
.yMd().format(selectedDate
)),
Icon(Icons
.arrow_drop_down
),
]
),
),
],
)
],
),
),
);
}
}
showDatePicker:获取选择的日期
import
'package:flutter/material.dart';
import
'package:intl/intl.dart';
import
'dart:async';
class DateTimeDemo extends StatefulWidget
{
DateTimeDemo({Key key
}) : super(key
: key
);
@override
_DateTimeDemo
createState() => _DateTimeDemo();
}
class _DateTimeDemo extends State
<DateTimeDemo
> {
DateTime selectedDate
=DateTime
.now();
_selectDate() async
{
final DateTime date
=await
showDatePicker(
context
: context
,
initialDate
: selectedDate
,
firstDate
: DateTime(1900),
lastDate
: DateTime(2100)
);
if(date
== null
)return;
setState(() {
selectedDate
=date
;
});
}
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('DateTimeDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
InkWell(
onTap
:_selectDate
,
child
: Row(
children
:<Widget
>[
Text(DateFormat
.yMd().format(selectedDate
)),
Icon(Icons
.arrow_drop_down
),
]
),
),
],
)
],
),
),
);
}
}
15 showTimePicker:时间选择器
import
'package:flutter/material.dart';
import
'package:intl/intl.dart';
import
'dart:async';
class DateTimeDemo extends StatefulWidget
{
DateTimeDemo({Key key
}) : super(key
: key
);
@override
_DateTimeDemo
createState() => _DateTimeDemo();
}
class _DateTimeDemo extends State
<DateTimeDemo
> {
DateTime selectedDate
=DateTime
.now();
TimeOfDay selectedTime
=TimeOfDay(hour
: 9, minute
: 30);
_selectDate() async
{
final DateTime date
=await
showDatePicker(
context
: context
,
initialDate
: selectedDate
,
firstDate
: DateTime(1900),
lastDate
: DateTime(2100)
);
if(date
== null
)return;
setState(() {
selectedDate
=date
;
});
}
_selectTime() async
{
final TimeOfDay time
=await
showTimePicker(
context
: context
,
initialTime
: selectedTime
,
);
if(time
==null
)return;
setState(() {
selectedTime
=time
;
});
}
@override
Widget
build(BuildContext context
) {
return Scaffold(
appBar
: AppBar(
title
: Text('DateTimeDemo'),
elevation
: 0.0,
),
body
: Container(
padding
: EdgeInsets
.all(16.0),
child
: Column(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
Row(
mainAxisAlignment
: MainAxisAlignment
.center
,
children
: <Widget
>[
InkWell(
onTap
:_selectDate
,
child
: Row(
children
:<Widget
>[
Text(DateFormat
.yMd().format(selectedDate
)),
Icon(Icons
.arrow_drop_down
),
]
),
),
InkWell(
onTap
:_selectTime
,
child
: Row(
children
:<Widget
>[
Text(selectedTime
.format(context
)),
Icon(Icons
.arrow_drop_down
),
]
),
),
],
)
],
),
),
);
}
}
16 Future:异步程序
如果程序里有一些接口需要花费一些时间去执行,比如读取文件等等,我们一般不会一直等待它完成。一般会让他先返回一个初始值,然后等他执行完了,再更新新的值。 async