系统相关
锁定固定方向
// 在main.dart中
WidgetsFlutterBinding.ensureInitialized();
SystemChrome.setPreferredOrientations([
// 这里只添加允许的方向
DeviceOrientation.portraitUp, // 顶部朝上
DeviceOrientation.portraitDown, // 顶部朝下
DeviceOrientation.landscapeLeft, // 左侧朝上
DeviceOrientation.landscapeRight // 右侧朝上
]);
安卓设备UI模式
// 在主函数指向的Widget中:
class MainApp extends StatelessWidget {
const MainApp({super.key});
@override
Widget build(BuildContext context) {
// 这里设置UI模式为没有空隙,即可以在导航条或者“刘海”后面添加内容
SystemChrome.setEnabledSystemUIMode(SystemUiMode.edgeToEdge);
// 其它内容
}
}
⚠️注意,不要让UI的内容位于安全区之外,详细见长度参数
macOS系统菜单
自定义菜单
return PlatformMenuBar(
menus: [
PlatformMenu(
label: '菜单名称',
menus: [
PlatformMenuItemGroup(
members: [
PlatformMenuItem(
label: '菜单按钮',
onSelected: () {},
),
]
)
],
),
],
);
系统菜单
const PlatformMenuItemGroup(
members: [
PlatformProvidedMenuItem(
enabled: true,
type: PlatformProvidedMenuItemType.hide,
),
PlatformProvidedMenuItem(
enabled: true,
type: PlatformProvidedMenuItemType.quit,
),
]
)
编辑菜单
PlatformMenu(
label: "编辑".tr,
menus: [
PlatformMenuItem(
label: "拷贝",
shortcut: const SingleActivator(
LogicalKeyboardKey.keyC,
meta: true,
),
onSelected: (){
final focusedContext = FocusManager.instance.primaryFocus?.context;
if (focusedContext != null) {
Actions.invoke(focusedContext, CopySelectionTextIntent.copy);
}
}
),
PlatformMenuItem(
label: "粘贴",
shortcut: const SingleActivator(
LogicalKeyboardKey.keyV,
meta: true
),
onSelected: (){
final focusedContext = FocusManager.instance.primaryFocus?.context;
if (focusedContext != null) {
Actions.invoke(focusedContext, const PasteTextIntent(SelectionChangedCause.keyboard));
}
},
),
PlatformMenuItem(
label: "全选",
shortcut: const SingleActivator(
LogicalKeyboardKey.keyA,
meta: true
),
onSelected: (){
final focusedContext = FocusManager.instance.primaryFocus?.context;
if (focusedContext != null) {
Actions.invoke(focusedContext, const SelectAllTextIntent(SelectionChangedCause.keyboard));
}
}
)
]
),