Flutter 功能型组件
监听返回键
两次点击返回键才会退出程序。
class _MyHomePageState extends State<MyHomePage> {
DateTime? lastTime;
@override
Widget build(BuildContext context) {
return WillPopScope(
onWillPop: () async {
if (lastTime == null ||
DateTime.now().difference(lastTime!) > const Duration(seconds: 1)) {
lastTime = DateTime.now();
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text("再按一次退出程序")),
);
return false;
} else {
return true;
}
},
child: Scaffold(
),
);
}
}
菜单类型组件
icon:菜单图标。
itemBuilder:菜单内容列表。
tooltip:长按显示。
initialValue:默认值。
shape:菜单形状。
onSelected:选中回调。
onCanceled:取消回调。
offset:菜单偏移位置
PopupMenuButton<String>(
icon: const Icon(Icons.menu),
tooltip: "显示菜单",
initialValue: "语文",
shape: RoundedRectangleBorder(
side: BorderSide(
color: Colors.grey,
),
borderRadius: BorderRadius.circular(10),
),
itemBuilder: (context) {
return const [
PopupMenuItem(
value: "语文",
child: Text("语文"),
),
PopupMenuItem(
value: "英语",
child: Text("英语"),
),
PopupMenuItem(
value: "数学",
child: Text("数学"),
),
PopupMenuItem(
value: "物理",
child: Text("物理"),
),
];
},
onSelected: (value) {
print("选中:$value");
},
onCanceled: () {
print("取消");
},
offset: Offset(0, 50),
)
···
PopupMenuButton<String>(
icon: const Icon(Icons.menu),
itemBuilder: (context) {
return const [
CheckedPopupMenuItem(
value: "语文",
child: Text("语文"),
checked: true,
),
CheckedPopupMenuItem(
value: "英语",
child: Text("英语"),
),
CheckedPopupMenuItem(
value: "数学",
child: Text("数学"),
),
CheckedPopupMenuItem(
value: "物理",
child: Text("物理"),
),
];
},
)