dart - 扩展 Google Flutter 中的 UnderlineInputBorder 类

标签 dart flutter

我试图通过扩展 Flutter 来修改 UnderlineInputBorder 的行为。 但 Flutter 总是调用父类(super class) (UnderlineInputBorder) 的 draw() 方法而不是我的 _PremiseInputBorder,如下所示。

TextField 小部件的代码:

TextField(
      decoration: InputDecoration(
          contentPadding: EdgeInsets.zero, 
          border: _PremiseInputBorder()),
      )

我的自定义边框类的代码:

class _PremiseInputBorder extends UnderlineInputBorder {
  const _PremiseInputBorder() : super();

  @override
  void paint(Canvas canvas, Rect rect, {
    double gapStart,
    double gapExtent = 0.0,
    double gapPercentage = 0.0,
    TextDirection textDirection,}) {

    if (borderRadius.bottomLeft != Radius.zero ||     
      borderRadius.bottomRight != Radius.zero)
      canvas.clipPath(getOuterPath(rect, textDirection: textDirection));
      Offset leftRect = Offset(rect.left, rect.bottom - 5.0);
      Offset rightRect = Offset(rect.right, rect.bottom - 5.0);
      canvas.drawLine(leftRect, rightRect, borderSide.toPaint());
    }
  }

最佳答案

UnderlineInputBorder

@override
  UnderlineInputBorder copyWith({ BorderSide borderSide, BorderRadius borderRadius }) {
    return UnderlineInputBorder(
      borderSide: borderSide ?? this.borderSide,
      borderRadius: borderRadius ?? this.borderRadius,
    );
  }

即使您扩展类,它也会返回一个 UnderlineInputBorder

如果添加到_PremiseInputBorder

  @override
  UnderlineInputBorder copyWith(
      {BorderSide borderSide, BorderRadius borderRadius}) {
    return _PremiseInputBorder();
  }

它将调用您的paint() 方法。

还有其他方法可以做类似的事情,例如 scale()lerpFrom()lerpTo() 但它们没有被调用你的简单例子。 您还需要覆盖这些以使其适用于所有场景。

关于dart - 扩展 Google Flutter 中的 UnderlineInputBorder 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53095228/

相关文章:

listview - Flutter ListView 没有更新

flutter - Dart/Flutter 中 “=>”(箭头)的含义是什么?

flutter - 打印出所有hashMap值

flutter - 为什么我的 CupertinoActionSheet 从顶部显示?

flutter : Show an Alert Dialog after an async Api call

多选复选框的 Flutter 问题 - 来自 Firestore 的数据

flutter - 无法将 mobx 集成到简单的 flutter 应用程序中,该应用程序会在点击时增加计数器

flutter - 我不明白Flutter中Theme类的意义

dart - Dart 模拟功能

flutter - 如何比较 flutter 中的时间?