Flutter开关控制插件keepswitch的使用

Flutter 开关控制插件 keepswitch 的使用

安装

在你的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  keepswitch: <latest-version>

然后在 Dart 文件中导入:

import 'package:keepswitch/keepswitch.dart';

基本用法

首先创建一个 Scaffold 并设置 AppBarbody。在 body 中调用 settingsList() 方法。

[@override](/user/override)
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      shape: BeveledRectangleBorder(),
      toolbarHeight: 60,
      title: Center(child: const Text('Settings UI')),
    ),
    body: Padding(
      padding: const EdgeInsets.only(top: 10),
      child: SafeArea(
        child: settingsList(),
      ),
    ),
  );
}

// 创建一个列表项,其中包含一个开关控件
Widget settingsList() {
  return ListTile(
    leading: leading, // 可以自定义图标或组件
    trailing: KeepSwitch(
      value: switchValue!, // 控制开关的状态
      onChanged: enabled ? onToggle : null, // 开关状态改变时的回调函数
      activeColor: Theme.of(context).accentColor, // 开关开启时的颜色
      inactiveColor: Colors.grey, // 开关关闭时的颜色
      inactiveText: 'Off', // 开关关闭时的文本
      activeText: 'On', // 开关开启时的文本
      activeTextColor: Colors.white70, // 开关开启时文本颜色
      inactiveTextColor: Colors.white70, // 开关关闭时文本颜色
      isSwitchDisabled: false, // 是否禁用开关
      switchHeight: 55, // 开关的高度
      switchWidth: 27, // 开关的宽度
      switchButtonColor: Colors.white, // 开关按钮的颜色
    ),
    title: Text(
      title, // 列表项的标题
      style: titleTextStyle,
      maxLines: titleMaxLines,
      overflow: TextOverflow.ellipsis,
    ),
    subtitle: subtitle != null
        ? Text(
            subtitle!,
            style: subtitleTextStyle ?? titleTextStyle,
            maxLines: subtitleMaxLines,
            overflow: TextOverflow.ellipsis,
          )
        : null,
  );
}

示例代码

下面是一个完整的示例代码,展示了如何使用 keepswitch 插件来创建一个带有开关控件的设置界面。

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

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SettingsPage(),
    );
  }
}

class SettingsPage extends StatefulWidget {
  [@override](/user/override)
  _SettingsPageState createState() => _SettingsPageState();
}

class _SettingsPageState extends State<SettingsPage> {
  bool switchValue = false;
  bool enabled = true;

  void onToggle(bool value) {
    setState(() {
      switchValue = value;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        shape: BeveledRectangleBorder(),
        toolbarHeight: 60,
        title: Center(child: const Text('Settings UI')),
      ),
      body: Padding(
        padding: const EdgeInsets.only(top: 10),
        child: SafeArea(
          child: settingsList(),
        ),
      ),
    );
  }

  Widget settingsList() {
    return ListView(
      children: [
        settingsItem('主题模式', switchValue, onToggle),
        settingsItem('夜间模式', switchValue, onToggle),
        settingsItem('蓝牙连接', switchValue, onToggle),
      ],
    );
  }

  Widget settingsItem(String title, bool value, Function(bool) onChanged) {
    return ListTile(
      leading: Icon(Icons.settings), // 自定义图标
      trailing: KeepSwitch(
        value: value,
        onChanged: enabled ? onChanged : null,
        activeColor: Theme.of(context).accentColor,
        inactiveColor: Colors.grey,
        inactiveText: 'Off',
        activeText: 'On',
        activeTextColor: Colors.white70,
        inactiveTextColor: Colors.white70,
        isSwitchDisabled: false,
        switchHeight: 55,
        switchWidth: 27,
        switchButtonColor: Colors.white,
      ),
      title: Text(
        title,
        style: TextStyle(fontSize: 18),
        maxLines: 1,
        overflow: TextOverflow.ellipsis,
      ),
    );
  }
}

更多关于Flutter开关控制插件keepswitch的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter开关控制插件keepswitch的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


KeepSwitch 是一个 Flutter 插件,用于创建一个带有开关(Switch)的控件,并且可以在开关状态改变时执行相应的操作。它通常用于在应用中控制某些功能的开启或关闭状态。

安装 KeepSwitch

首先,你需要在 pubspec.yaml 文件中添加 keepswitch 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  keepswitch: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

使用 KeepSwitch

以下是一个简单的示例,展示了如何在 Flutter 应用中使用 KeepSwitch

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('KeepSwitch Example'),
        ),
        body: Center(
          child: KeepSwitchExample(),
        ),
      ),
    );
  }
}

class KeepSwitchExample extends StatefulWidget {
  @override
  _KeepSwitchExampleState createState() => _KeepSwitchExampleState();
}

class _KeepSwitchExampleState extends State<KeepSwitchExample> {
  bool _switchValue = false;

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        Text('Switch is ${_switchValue ? 'ON' : 'OFF'}'),
        SizedBox(height: 20),
        KeepSwitch(
          value: _switchValue,
          onChanged: (bool value) {
            setState(() {
              _switchValue = value;
            });
          },
        ),
      ],
    );
  }
}

代码解释

  1. 导入包

    import 'package:keepswitch/keepswitch.dart';
    

    这行代码导入了 keepswitch 插件。

  2. 创建 KeepSwitch

    KeepSwitch(
      value: _switchValue,
      onChanged: (bool value) {
        setState(() {
          _switchValue = value;
        });
      },
    ),
    
    • value:表示当前开关的状态(true 表示开,false 表示关)。
    • onChanged:当用户切换开关时,会调用这个回调函数。你可以在这里更新状态并执行其他操作。
  3. 状态管理

    setState(() {
      _switchValue = value;
    });
回到顶部