当前位置: 首页 > article >正文

Flutter 开关属性

Switch 构造函数的样式

const Switch({
  Key? key,
  required this.value,           // 当前开关的状态,布尔值(true 表示打开,false 表示关闭)
  required this.onChanged,       // 状态切换时的回调函数,执行您定义的逻辑
  this.activeColor,              // 开关打开时圆形部分的颜色
  this.activeTrackColor,         // 开关打开时轨道的颜色
  this.inactiveThumbColor,       // 开关关闭时圆形部分的颜色
  this.inactiveTrackColor,       // 开关关闭时轨道的颜色
  this.activeThumbImage,         // 开关打开时圆形部分的图片
  this.inactiveThumbImage,       // 开关关闭时圆形部分的图片
  this.materialTapTargetSize,    // 调整触摸区域的大小
  this.dragStartBehavior = DragStartBehavior.start, // 控制拖动行为
});

CupertinoSwitch 构造函数的样式

const CupertinoSwitch({
  Key? key,                        // 小部件的唯一标识符
  required this.value,             // 当前开关的状态,布尔值,true 为打开,false 为关闭
  required this.onChanged,         // 当开关状态改变时的回调函数,接受新的状态 (bool) 作为参数
  this.activeColor = CupertinoColors.systemGreen, // 开关打开时,圆形部分的颜色(默认为绿色)
  this.trackColor,                 // 开关关闭时轨道的颜色(默认浅灰色,某些版本需要自行设置)
  this.thumbColor,                 // 开关滑块的颜色(默认为白色)
  this.dragStartBehavior = DragStartBehavior.start, // 拖动行为,定义用户如何开始拖动开关
});

CupertinoSwitch和Switch的区别

属性CupertinoSwitchSwitch
平台风格模拟 iOS 系统的开关样式,符合 iOS 设计规范主要是 Android 风格的开关,符合 Material Design 规范
默认外观具有 iOS 风格的滑块和轨道,滑块为圆形,整体呈现圆滑且简洁的外观具有 Material Design 风格,开关较大,颜色和样式上更偏向 Android
外观定制支持 activeColortrackColorthumbColordragStartBehavior 等定制项支持 activeColorinactiveTrackColorinactiveThumbColoractiveTrackColorthumbColor 等定制项
使用场景通常在 iOS 风格的应用中使用通常在 Android 风格的应用中使用或跨平台应用中使用
交互体验更符合 iOS 的交互方式,支持滑动并且视觉上简洁适合 Android 风格的交互,支持点击或拖动触发
位置位于 flutter/cupertino.dart 包中位于 flutter/material.dart 包中
自定义样式CupertinoSwitch 的外观与默认值深度绑定,更难做到深度定制Switch 更灵活,允许更详细的颜色、轨道、滑块样式定制

示例代码


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

void main() {
  runApp(MyApp());
}

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

class SwitchDemo extends StatefulWidget {
  @override
  _SwitchDemoState createState() => _SwitchDemoState();
}

class _SwitchDemoState extends State<SwitchDemo> {
  bool _isSwitched = false;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('Switch 示例')),
      body: Center(
        child: Column(
          children: [
            Switch(
              value: _isSwitched,
              onChanged: (bool value) {
                setState(() {
                  _isSwitched = value;
                });
              },
              activeColor: Colors.green, // 打开时的颜色
              inactiveThumbColor: Colors.red, // 关闭时圆形部分的颜色
              inactiveTrackColor: Colors.grey, // 关闭时轨道的颜色
            ),
            CupertinoSwitch(
              value: _isSwitched,
              onChanged: (bool value) {
                setState(() {
                  _isSwitched = value;
                });
              },
              activeColor: CupertinoColors.activeGreen,
              trackColor: CupertinoColors.systemGrey,
            )
          ],
        ),
      ),
    );
  }
}


http://www.kler.cn/a/451218.html

相关文章:

  • Python|Pyppeteer实现自动化获取reCaptcha验证码图片以及提示词(29)
  • leetcode hot100 将有序数组转化为二叉搜索树
  • 使用 perf 工具进行性能分析
  • leetcode-80.删除有序数组的重复项II-day12
  • 内网穿透ubuntu20 docker coplar
  • 【FAQ】HarmonyOS SDK 闭源开放能力 — Vision Kit(2)
  • React 前端框架简介
  • 医疗信息系统有哪些
  • Jenkins 持续集成部署
  • WPS中插入矩阵的方法
  • 专栏二十三:Python读取和分析空间数据的经验杂谈
  • D105【python 接口自动化学习】- pytest进阶参数化用法
  • 【linux】NFS实验
  • dns一般设置为多少
  • Windows安装无线打印机
  • oracle linux8.10+ oracle 23ai安装
  • Yolo算法中特征相似导致误报问题
  • Springboot基于Web的辅助教学平台ln5i2(程序+源码+数据库+调试部署+开发环境)
  • Redis热点数据管理全解析:从MySQL同步到高效缓存的完整解决方案
  • 155. 最小栈
  • EasyExcel停更,FastExcel接力
  • 联通光猫怎么自己改桥接模式?
  • WebStorm 创建一个Vue项目
  • [Unity Shader] 【图形渲染】Shader数学基础12-坐标空间变换
  • B树的实现
  • 具身智能打响争夺战:自主感知、行动与进化简史(连载1)