Как отключить эффект всплеска виджета по умолчанию во флаттере? - PullRequest
0 голосов
/ 25 апреля 2018

Как отключить эффект брызг / ряби / чернил по умолчанию на виджете? Иногда эффект нежелателен, например, в следующем случае TextField:

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Согласно предложению @ hunter, приведенному выше, я обнаружил, что установив highlightColor и splashColor в моей теме на Colors.transparent, удалил пульсации.

У меня есть некоторые опасения, что установка highlightColor можетесть некоторые эффекты, но я еще не заметил.

0 голосов
/ 25 апреля 2018

Вы можете заменить splashFactory темы тем, который ничего не рисует:

class NoSplashFactory extends InteractiveInkFeatureFactory {
  const NoSplashFactory();

  @override
  InteractiveInkFeature create({
    @required MaterialInkController controller,
    @required RenderBox referenceBox,
    @required Offset position,
    @required Color color,
    bool containedInkWell: false,
    RectCallback rectCallback,
    BorderRadius borderRadius,
    double radius,
    VoidCallback onRemoved,
  }) {
    return new NoSplash(
      controller: controller,
      referenceBox: referenceBox,
    );
  }
}

class NoSplash extends InteractiveInkFeature {
  NoSplash({
    @required MaterialInkController controller,
    @required RenderBox referenceBox,
  })  : assert(controller != null),
        assert(referenceBox != null),
        super(
          controller: controller,
          referenceBox: referenceBox,
        );

  @override
  void paintFeature(Canvas canvas, Matrix4 transform) {}
}

И оберните ваш виджет этим:

child: new Theme(
  data: new ThemeData(splashFactory: const NoSplashFactory()),
  child: new TextField(...),
),

Первоначально HansMuller ответил о GitHub PR .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...