Flutter Widget(IOS Style) - CupertinoApp

文章目录[x]
  1. 1:Root Widget
  2. 2:Scaffold

Flutter中设计风格主要为Material Design风格,Flutter也支持IOS设置风格Cupertino的一系列Widget,分别对应flutter的包下的material目录下的dart文件和cupertino目录的dart文件。

Root Widget

material design设计风格下的root widgetMaterialApp,ios 风格的root widgetCupertinoApp;

 Material Design:

void main()=>runApp(MyMaterialApp());

 

class MyMaterialApp extends StatelessWidget{
@override
Widget build(BuildContext context) => MaterialApp(
home: HomeScreen(),
);
}

Cupertino:

void main()=>runApp(MyAppCupertino());

 

class MyAppCupertino extends StatelessWidget{
@override
Widget build(BuildContext context) => CupertinoApp(
home: HomeScreen(),
);
}

Scaffold

material design小部件创建视觉支架的为Scaffold,为cupertino小部件创建视觉支架的为CupertinoTabScaffoldCupertinoPageScaffold,其中CupertinoTabScaffold可以使用底部的选项卡栏为应用程序创建布局,其中CupertinoPageScaffoldiOS模式页面的典型内容,实现布局、顶部有导航栏。

如下为CupertinoPageScaffoldCupertinoTabScaffold混合使用实现ios风格UI的部分代码:

class HomeScreen extends StatelessWidget{
@override
Widget build(BuildContext context) {
return CupertinoTabScaffold(
tabBar: CupertinoTabBar(items: [
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.book_solid),
title: Text('书籍')
),
BottomNavigationBarItem(
icon: Icon(CupertinoIcons.eye_solid),
title: Text('观看')
)
]),
tabBuilder: (context,position){
return CupertinoTabView(
builder: (context){
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(
middle: (position==0)?Text("书籍"):Text("观看"),
),
child: Center(
child: CupertinoButton(child:
Text("this is tab :$position",
), onPressed: (){
Navigator.of(context).push(CupertinoPageRoute(builder: (context){
return DetailScreen((position==0)?"书籍":"观看");
})
);
})
),
);
},
);
});
}
}

 

 

///详细页面;
class DetailScreen extends StatelessWidget{
final String title;

DetailScreen(this.title);

@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
navigationBar: CupertinoNavigationBar(middle: Text("Details"),),
child: Center(
child: Text("欢迎来到 :$title"),
));
}
}

可以使用iOS风格的图标CupertinoIcons;

CupertinoPageRouteCupertino创建一个页面路由,以便在iOS设计的应用程序中使用。MaterialPageRoute定义了以material design的方式转换的应用页面。

点赞

发表评论

昵称和uid可以选填一个,填邮箱必填(留言回复后将会发邮件给你)
tips:输入uid可以快速获得你的昵称和头像

Title - Artist
0:00