苹果新总部 - Apple Park
Cupertino
Cupertino(库布蒂诺),位于硅谷湾区一座美丽的小城市, Apple Park坐落在这座城市
所以在Flutter中 Cupertino 代表专门为 iOS 风格设计的一系列控件
flutter/lib/cupertino.dart列出了所有可用的iOS控件
快速搭建iOS主界面
- CupertinoApp
相当于UIAppDelegate
- CupertinoTabScaffold CupertinoTabBar
相当于 UITabBarController
- CupertinoThemeData
设置 iOS App 主题
- CupertinoPageScaffold CupertinoNavigationBar
相当于 UINavigationController
使用这几个组件就能搭建最基础的iOS风格主界面了
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return const CupertinoApp(
title: 'Cupertino iOS Demo',
theme: CupertinoThemeData(
),
home: MyHomePage(title: 'Cupertino iOS design style'),
);
}
}
class MyHomePage extends StatelessWidget {
const MyHomePage({super.key, required this.title});
final String title;
CupertinoTabBar _cupertinoTabBar(){
return CupertinoTabBar(
// 点击回调
onTap: (index){
debugPrint(index.toString());
},
currentIndex: 0, // 设置默认选中位置
activeColor: Colors.blue, // 图标高亮颜色
inactiveColor: Colors.grey, // 图标未选中颜色
iconSize: 25, // 图标大小
// 边框
items: [
_bottomNavigationBarItem(Icons.home, Icons.home_outlined, "首页"),
_bottomNavigationBarItem(Icons.addchart, Icons.addchart_outlined, "发现"),
_bottomNavigationBarItem(Icons.alarm, Icons.alarm_outlined, "提醒"),
_bottomNavigationBarItem(Icons.settings, Icons.settings_outlined, "设置"),
],
);
}
BottomNavigationBarItem _bottomNavigationBarItem(IconData iconData, IconData activeIcon, String title){
return BottomNavigationBarItem(
icon: Icon(iconData),
activeIcon: Icon(activeIcon),
label: title,
);
}
@override
Widget build(BuildContext context) {
return CupertinoTabScaffold(
tabBar: _cupertinoTabBar(),
tabBuilder: (context, index){
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: const Text("CupertinoTabBar"),
leading: CupertinoNavigationBarBackButton(onPressed: () { },
),
trailing: CupertinoButton(padding: EdgeInsets.zero, onPressed: () { },
child: const Text("add"),),
),
child: ListView(
children: [
],
),
);
},
);
}
}
如下是 Cupertino(iOS) 常见的一些控件
CupertinoActionSheet
iOS 样式的模式弹框,对应 UIActionSheet(UIAlertController)。
CupertinoActivityIndicator
iOS 样式的活动指示器,对应 UIActivityIndicator
CupertinoAlertDialog
iOS 样式的Alert对话框, 对应 UIAlertView(UIAlertController)
CupertinoButton
iOS 样式按钮, 对应 UIButton
CupertinoDatePicker CupertinoPicker
iOS 样式的日期和时间选取器。对应 UIDatePicker 和 UIPicker
CupertinoListSection
iOS 样式的滚动视图容器。对应 UIScrollView
CupertinoListTile
iOS 样式的列表项。对应 UITableViewCell
CupertinoNavigationBar
iOS 样式的顶部导航容器。一般与CupertinoPageScaffold一起使用, 相当于 UINavigationBar
CupertinoPageScaffold
iOS 样式的页面导航布局结构。相当于 UINavigationController
CupertinoSlidingSegmentedControl
分段选择控件, 对应UISegmentControl
CupertinoSlider
从一系列值中进行选择, 对应UISlider
CupertinoSwitch
iOS 样式的开关状态切换。对应UISwitch
CupertinoTabBar
iOS 样式的底部选项卡栏。通常与CupertinoTabScaffold一起使用。相当于UITabBar
CupertinoTabScaffold
选项卡式 iOS App结构。相当于 UITabBarController
CupertinoTabView
选项卡之间导航的选项卡根内容。通常与CupertinoTabScaffold一起使用。对应 UITabBarItem
CupertinoTextField
iOS 样式的文本字段。对应UITextField