Flutter Cupertino风格组件

1. 概述

Cupertino风格组件即IOS风格组件。主要有CupertinoTabBar、CupertinoPageScaffold、CupertinoTabScaffold、CupertinoTabView等。目前组件库还没有Material Design风格组件丰富。

2 CupertinoActivityIndicator组件

IOS风格loading指示器。

常用属性

属性名类型默认值说明
radiusdouble10.0加载图形的半径
animatingbooltrue是否播放加载动画

3 CupertinoAlertDialog

与Material Design风格的AlertDialog类似。

常见属性

属性名类型说明
actionsList<Widget>对话框底部操作按钮。如确定、取消。
titleWidget对话框标题,通常是一个文本
contentWidget对话框内容部分,通常为提示内容

4 CupertinoButton

IOS风格按钮。

常用属性

属性名类型默认值说明
colorColor-按钮颜色
disableColorColorThemeData.disabledColor按钮禁用状态颜色
onPressedVoidCallback-按钮按下时回调函数
childWidget-按钮的child通常为Text文本,显示按钮名字
enablebooltrue是否为禁用状态

5 Cupertino导航组件

5.1 CupertinoTabScaffold

选项卡组件,将选项卡按钮与选项卡视图绑定。

常用属性

属性名类型说明
tabBarCupertinoTabBar选项卡按钮,通常由图标和文本组成
tabBuilderIndexedWidgetBuilder选项卡视图构造器

5.2 CupertinoTabBar

选项卡按钮,通常由BottomNavigationBarItem组成包含图标加文本。

常用属性

属性名类型说明
itemsList<BottomNavigationBarItem>选项卡按钮集合
backgroundColorColor选项卡按钮背景色
activeColorColor选中按钮前景色
iconSizedouble选项卡图标大小

5.3 CupertinoTabView

选项卡视图。

常用属性

属性名类型说明
builderWidgetBuilder选项卡视图构造器
routesMap<String, WidgetBuilder>选项卡视图路由

5.4 CupertinoPageScaffold

页面的基本布局结构。包含内容和导航栏。

常用属性

属性名类型说明
backgroudColorColor页面背景色
navigationBarObstructingPreferredSizeWidget顶部导航栏按钮。包含左中右三个子组件
childWidget页面的主要内容

5.5 CupertinoNavigationBar

导航栏结构组件。

常用属性

属性名类型说明
middleWidget导航栏中间组件,通常为页面标题
trailingWidget导航栏右边组件,通常为菜单按钮
leadingWidget导航栏左边组件,通常为返回按钮

6 示例

6.1 示例1-CupertinoButton

import 'dart:math';

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'MaterialApp',
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: CupertinoButton(
          child: Text('CupertinoButton'),
          color: Color(0xff0000ff),
          onPressed: () {},
        ),
      ),
    );
  }
}

效果显示:
在这里插入图片描述

6.2 示例2-CupertinoAlertDialog

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'MaterialApp',
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: CupertinoAlertDialog(
            title: Text('标题'),
          content: Text('aaaa'),
          actions: <Widget>[
            CupertinoDialogAction(
              child: Text('确定'),
            ),
            CupertinoDialogAction(
              child: Text('取消'),
            ),
          ],
        ),
      ),
    );
  }
}

在这里插入图片描述

6.3 示例3-CupertinoActivityIndicator

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'MaterialApp',
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            CircularProgressIndicator(
//              strokeWidth: ,
                ),
            SizedBox(
              height: 50.0,
            ),
            CupertinoActivityIndicator(
              radius: 15.0,
            ),
          ],
        ),
      ),
    );
  }
}

效果显示:
在这里插入图片描述

6.4 示例4

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'MaterialApp',
      home: HomePage(),
    );
  }
}

class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  @override
  Widget build(BuildContext context) {
    return CupertinoTabScaffold(
      tabBar: CupertinoTabBar(
        items: [
          BottomNavigationBarItem(
            icon: Icon(Icons.home),
            title: Text('主页'),
          ),
          BottomNavigationBarItem(
            icon: Icon(Icons.message),
            title: Text('消息'),
          ),
        ],
      ),
      tabBuilder: (context, index) {
        return CupertinoTabView(
          builder: (context) {
            switch (index) {
              case 0:
                return MyHome();
                break;
              case 1:
                return MyMessage();
                break;
            }
          },
        );
      },
    );
  }
}

class MyHome extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: CupertinoNavigationBar(

        middle: Text('主页'),
        leading: Icon(CupertinoIcons.back),
        trailing: Icon(CupertinoIcons.search),
      ),
      child: Center(
        child: Text('主页'),
      ),
    );
  }
}

class MyMessage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return CupertinoPageScaffold(
      navigationBar: CupertinoNavigationBar(
        middle: Text('消息'),
        leading: Icon(CupertinoIcons.back),
        trailing: Icon(CupertinoIcons.search),
      ),
      child: Center(
        child: Text('消息'),
      ),
    );
  }
}

效果显示:
在这里插入图片描述

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值