Как удалить всплеск в материале PageView? - PullRequest
0 голосов
/ 29 мая 2018

Как удалить всплеск в компоненте PageView материала ?Я попытался установить для accentColor и splashColor в ThemeData значение Colors.transparent, но это привело к прозрачному черному всплеску для всего приложения.

Я попытался создать NoSplashContainer, очень похожий наэто решение , но всплеск остается внутри дочерних элементов.

import 'package:flutter/material.dart';

class NoSplashContainer extends StatelessWidget {
  final Widget child;
  NoSplashContainer(this.child) : assert(child != null);
  @override
  Widget build(BuildContext context) {
    return (new Container(
        child: new Theme(
            data: Theme
                .of(context)
                .copyWith(splashFactory: const NoSplashFactory()),
            child: child)));
  }
}

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) {}
}

Я использую NoSplashContainer примерно так ...

new NoSplashContainer(new PageView(
   children: ...,
)));

но всплеск все еще присутствуетв PageView.

1 Ответ

0 голосов
/ 31 мая 2018

Существует Widget с именем Theme, который будет применять тему к виджетам-потомкам.Таким образом, вы можете использовать Theme для настройки любой части вашего приложения без изменения темы всего приложения.Как то так:

new Theme(
      data: Theme.of(context).copyWith(
        splashColor: Colors.transparent
      ), 
      child:....
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...