美文网首页FlutterFlutter
Flutter 之 Cupertino 系列控件

Flutter 之 Cupertino 系列控件

作者: Goach | 来源:发表于2019-09-25 11:15 被阅读0次

IOS 风格的控件,官网文档地址

https://flutterchina.club/widgets/cupertino/

CupertinoActivityIndicator

CupertinoActivityIndicator(
            animating: true,
            radius: 10.0,
          )

CupertinoAlertDialog

class _MyHomePageState extends State<MyHomePage> {
  void _showIOSDialog(BuildContext cxt) {
    showCupertinoDialog<int>(
        context: cxt,
        builder: (cxt) {
          return new CupertinoAlertDialog(
            title: Text('提示'),
            content: Text('是否退出应用'),
            actions: <Widget>[
              new Container(
                decoration: BoxDecoration(
                    border: Border(
                        right: BorderSide(color: Color(0xFFD9D9D9), width: 0.5),
                        top: BorderSide(color: Color(0xFFD9D9D9), width: 0.5))),
                child: CupertinoDialogAction(
                  child: new Text("确定"),
                  onPressed: () {
                    Navigator.pop(context);
                  },
                ),
              ),
              new Container(
                decoration: BoxDecoration(
                    border: Border(
                        top: BorderSide(color: Color(0xFFD9D9D9), width: 0.5))),
                child: CupertinoDialogAction(
                  child: new Text("取消"),
                  onPressed: () {
                    Navigator.pop(context);
                  },
                ),
              )
            ],
          );
        });
  }

  @override
  Widget build(BuildContext context) {
    return new Scaffold(
        appBar: new AppBar(title: const Text('首页')),
        body: new Container(
          alignment: Alignment.center,
          child: RaisedButton(
            onPressed: () => {_showIOSDialog(context)},
            child: Text('点我弹框'),
          ),
        ));
  }
}

CupertinoButton

CupertinoButton(
            //按钮控件布局
            child: Text('IOS风格按钮'),
            //内边距
            padding:EdgeInsets.all(10.0),
            //背景颜色
            color:Colors.blue,
            //onPress 为 null,禁用点击的背景颜色
            disabledColor:Colors.grey,
            //最小尺寸
            minSize : 44.0,
            //按下的透明度
            pressedOpacity : 0.1,
            //边框圆角
            borderRadius : const BorderRadius.all(Radius.circular(8.0)),
            //点击事件
            onPressed:()=>{
              print('点我干嘛')
            }
          )
          

CupertinoDialog

过时了,用 CupertinoAlertDialog

CupertinoDialogAction

通常用于CupertinoAlertDialog的一个button


CupertinoDialogAction(
                  child: new Text("确定"),
                  //是否为默认按钮
                  isDefaultAction: true,
                  //是否为取消操作按钮
                  isDestructiveAction: true,
                  onPressed: () {
                    Navigator.pop(context);
                  },
                )

CupertinoSlider

CupertinoSlider(
            //当前进度值
            value:_progress,
            //进度条监听事件
            onChanged:(progress) => {
              _progress = progress,
              print("_progress$_progress"),
              setState((){
              })
            },
            //进度条开始监听
            onChangeStart:(progress) => {
              print("onChangeStart$progress"),
            },
            //进度条结束监听
            onChangeEnd:(progress) => {
              print("onChangeEnd$progress"),
            },
            //进度条最小值
            min : 0.0,
            //进度条最大值
            max : 100.0,
            //进度条分成多少分
            divisions:1,
            //进度条颜色
            activeColor:Colors.blue,
          )

CupertinoSwitch

CupertinoSwitch(
            value: _isOpen,
            onChanged: (isOpen) => {
              _isOpen = isOpen,
              setState((){

              })
            },
            //开关颜色
            activeColor: Colors.blue,
          )

CupertinoPageRoute


 onPressed: (){
                Navigator.push(context, new CupertinoPageRoute(
                builder: (context) => Details(),
                ));
            },
            
            

CupertinoNavigationBar

iOS风格的导航栏. 通常和CupertinoPageScaffold一起使用。

new CupertinoNavigationBar(
          //左边Widget(一般为返回按钮)
          leading: const Icon(Icons.arrow_back_ios),
          //如果为true并且middle为空的时候并且当前路由是CupertinoPageRoute,则自动用[Text]小部件填充,文本当前路由的“title”。
          automaticallyImplyMiddle: true,
          //上一页按钮
          previousPageTitle: '上一页',
          backgroundColor: Colors.blue,
          middle: const Text(
            '标题',
            style: TextStyle(color: Colors.white),
          ),
          //右边Widget
          trailing: const Text(
            'trailing',
            style: TextStyle(color: Colors.white),
          ),
          //边框
          border: Border.all(color: Color(0xFFD9D9D9), width: 1.0),
          //图标颜色
          actionsForegroundColor: Colors.white,
          //内边距
          padding: EdgeInsetsDirectional.zero,
          //是否在导航栏之间切换。
          transitionBetweenRoutes: true,
        )
        

CupertinoPageScaffold

一个iOS风格的页面的基本布局结构。包含内容和导航栏,和 CupertinoNavigationBar 一起使用。

new CupertinoPageScaffold(
        navigationBar: new CupertinoNavigationBar(
          middle: const Text(
            '标题',
            style: TextStyle(color: Colors.black),
          ),
        ),
        child: new Container(
          alignment: Alignment.center,
          child: RaisedButton(
            child: Text('跳转下一个页面'),
            onPressed: () {
              Navigator.push(
                  context,
                  new CupertinoPageRoute(
                    builder: (context) => Details(),
                  ));
            },
          ),
        ))

CupertinoTabScaffold 和 CupertinoTabBar

标签式iOS应用程序的结构。将选项卡栏放在内容选项卡之上

CupertinoTabBar 是 iOS风格的底部选项卡。 通常和CupertinoTabScaffold一起使用。

new CupertinoTabScaffold(
        tabBar: new CupertinoTabBar(
          items: <BottomNavigationBarItem>[
            new BottomNavigationBarItem(
              icon: Icon(Icons.home),
              activeIcon: Icon(Icons.hourglass_full),
              title:Text('首页',
                style: TextStyle(color: Colors.black))
            ),
            new BottomNavigationBarItem(
                icon: Icon(Icons.fiber_manual_record),
                activeIcon: Icon(Icons.fiber_manual_record),
                title:Text('社区',
                    style: TextStyle(color: Colors.black))
            ),
            new BottomNavigationBarItem(
                icon: Icon(Icons.add_shopping_cart),
                activeIcon: Icon(Icons.add_shopping_cart),
                title:Text('发现',
                    style: TextStyle(color: Colors.black))
            ),
            new BottomNavigationBarItem(
                icon: Icon(Icons.my_location),
                activeIcon: Icon(Icons.my_location),
                title:Text('我的',
                    style: TextStyle(color: Colors.black))
            ),
          ],
        ),
        tabBuilder: (context,index) => new Container(
          alignment: Alignment.center,
          child: RaisedButton(
            child: Text('跳转下一个页面$index'),
            onPressed: () {
              Navigator.push(
                  context,
                  new CupertinoPageRoute(
                    builder: (context) => Details(),
                  ));
            },
          ),
        ))

CupertinoTabView

支持选项卡间并行导航项卡的根内容。通常与CupertinoTabScaffolde一起使用

tabBuilder: (context, index) => new CupertinoTabView(
              //返回按钮描述文本
              defaultTitle: '返回',
              //注册跳转的路径和页面
              routes: {
                '/home': (context) {
                  return CupertinoPageScaffold(
                    navigationBar: CupertinoNavigationBar(
                      middle: Text('我是标题'),
                    ),
                    child: Center(
                      child: Text('我是第二页'),
                    ),
                  );
                },
              },
              builder: (context) => new Container(
                    alignment: Alignment.center,
                    child: RaisedButton(
                      child: Text('跳转下一个页面$index'),
                      onPressed: () {
                        Navigator.of(context).pushNamed('/home');
                      },
                    ),
                  ),
            )

最后效果图为

image.png

相关文章

网友评论

    本文标题:Flutter 之 Cupertino 系列控件

    本文链接:https://www.haomeiwen.com/subject/ciapyctx.html