Flutter 开关和切换高级指南

我们都熟悉家用开关来打开和关闭我们的照明系统和其他电器。 我们也熟悉切换按钮; 如果您家里有电炊具或电磁炉,您可以在其电压和烹饪功能之间切换。

同样,我们的移动应用程序也有开关和拨动开关来打开/关闭 Wi-Fi、蓝牙等。

今天,我们正在深入了解 Flutter 开关和切换的参数和属性。

目录

  • 什么是开关小部件?

  • 什么是切换小部件?

  • 开关和拨动之间的关键区别

  • 切换小部件示例

    • 安卓

    • iOS

    • 带图片的安卓开关

  • 切换小部件示例

    • 单个和必需的拨动开关

    • 单个且不需要的拨动开关

    • 需要多选

    • 不需要的多项选择

  • 创建自定义动画开关按钮

  • 用于开关和切换的流行 Flutter 包

什么是开关小部件?

开关按钮是一个 Flutter 小部件,只有两种状态,真/假或开/关。 通常,开关是一个带有拇指滑块的按钮,用户可以将其从左拖动到右,反之亦然以在状态之间切换。 它不会自行维护其状态。 您必须致电 onChanged属性以保持按钮打开或关闭。

什么是切换小部件?

同样,切换小部件只有两种状态:真/假或开/关。 但是切换小部件会创建多个按行排列的按钮,允许用户在它们之间切换。

开关和拨动之间的关键区别

这是移动应用程序中的用例问题。 在大多数情况下,这些小部件用于设置页面。 如果您向下拖动移动应用程序的通知面板,您将看到一个切换按钮网格。 但是当您进入设置页面时,这些按钮将更改为开关。

你一定明白其中的区别。 在您的移动应用程序中,如果您有一个只需要两种状态的控件列表,您应该使用开关。 如果一行或网格中有多个控件,则应使用切换。

切换小部件示例

Flutter 提供了三种类型的 switch 小部件:


超过 20 万开发人员使用 LogRocket 来创造更好的数字体验 了解更多 →


  • 开关(安卓)

  • CupertinoSwitch (iOS)

  • Switch.adaptive(根据平台适配)

让我们看一下用于自定义小部件的最常用属性:

Switch(安卓)

Switch(
  // thumb color (round icon)
  activeColor: Colors.amber,
  activeTrackColor: Colors.cyan,
  inactiveThumbColor: Colors.blueGrey.shade600,
  inactiveTrackColor: Colors.grey.shade400,
  splashRadius: 50.0,
  // boolean variable value
  value: forAndroid,
  // changes the state of the switch
  onChanged: (value) => setState(() => forAndroid = value),
),

CupertinoSwitch(iOS)

CupertinoSwitch(
  // overrides the default green color of the track
  activeColor: Colors.pink.shade200,
  // color of the round icon, which moves from right to left
  thumbColor: Colors.green.shade900,
  // when the switch is off
  trackColor: Colors.black12,
  // boolean variable value
  value: forIos,
  // changes the state of the switch
  onChanged: (value) => setState(() => forIos = value),
),

自适应开关小部件没有任何独特或不同的属性。 但是安卓 Switch如果您想要图像或图标而不是通常的拇指颜色,可以进一步自定义小部件。 您需要使用资产图像定义拇指图像属性。 请看下面的代码。

安卓 Switch带图像

Switch(
  trackColor: MaterialStateProperty.all(Colors.black38),
  activeColor: Colors.green.withOpacity(0.4),
  inactiveThumbColor: Colors.red.withOpacity(0.4),
// when the switch is on, this image will be displayed
  activeThumbImage: const AssetImage('assets/happy_emoji.png'),
// when the switch is off, this image will be displayed
  inactiveThumbImage: const AssetImage('assets/sad_emoji.png'),
  value: forImage,
  onChanged: (value) => setState(() => forImage = value),
),

这就是代码在运行中的样子:

目前,我们不保存开关小部件的状态; 我们只是在改变它。 接下来是创建一个小应用程序,我们将在其中将主题从浅色更改为深色,反之亦然,当您关闭应用程序时,它的状态将被保存。

它是一个简单的单页应用程序,在 appBar,这将改变主题。

我已经使用 Flutter Hive 来保存应用程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pxr007

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值