如何自定义开关以使Flutter中的圆相对较小?

时间:2019-09-23 02:40:05

标签: flutter dart switch-statement

这是必需的开关 Required/expected switch

我正在使用flutter的“开关”小部件来执行此操作,但无法接近所需的开关。使用“变换”增加开关的大小,但增加整个开关的大小。关于如何匹配给定图像的任何想法? 我在这里: Where I am at

1 个答案:

答案 0 :(得分:0)

Switch小部件使用自适应模式,如果您检查源代码,则会发现以下内容:

  @override
  Widget build(BuildContext context) {
    switch (widget._switchType) {
      case _SwitchType.material:
        return buildMaterialSwitch(context);

      case _SwitchType.adaptive: {
        final ThemeData theme = Theme.of(context);
        assert(theme.platform != null);
        switch (theme.platform) {
          case TargetPlatform.android:
          case TargetPlatform.fuchsia:
            return buildMaterialSwitch(context);
          case TargetPlatform.iOS:
            return buildCupertinoSwitch(context);
        }
      }
    }
    assert(false);
    return null;
  }
}

它将对buildMaterialSwitch使用Android方法,对于iOS将使用buildCupertinoSwitch

检查buildCupertinoSwitch方法:

  Widget buildCupertinoSwitch(BuildContext context) {
    final Size size = getSwitchSize(Theme.of(context));
    return Container(
      width: size.width,  // Same size as the Material switch.
      height: size.height,
      alignment: Alignment.center,
      child: CupertinoSwitch(
        dragStartBehavior: widget.dragStartBehavior,
        value: widget.value,
        onChanged: widget.onChanged,
        activeColor: widget.activeColor,
      ),
    );
  }

那是关键,然后您必须使用CupertinoSwitch小部件:),只是不要忘记添加导入:

import 'package:flutter/cupertino.dart';