#flutter
#трепетание
Вопрос:
У меня есть следующий код, я пытаюсь добиться того, что я хочу, чтобы у моей плоской кнопки был собственный эффект пульсации. По умолчанию материал flutter создает эффект всплеска и не ощущается как родной. Я попытался обернуть свою FlatButton с помощью inkwell, чтобы как-то решить эту проблему, когда я нажимаю на кнопку, она игнорирует мой виджет inkwell. Как я могу это решить?
InkWell(
onTap: () => true,
splashFactory: InkRipple.splashFactory,
child: FlatButton(
color: Theme.of(context).colorScheme.primary,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(8)),
),
child: Text("Im a text"),
onPressed: () {},
));
Ответ №1:
Итак, проблема заключается в том, что функция передается в onPressed
из FlatButton
.
Вам просто нужно перейти null
к FlatButton
«s onPressed
«, чтобы триггер перешел к InkWell
«s onTap
» .
Попробуйте это:
InkWell(
onTap: () => true,
splashFactory: InkRipple.splashFactory,
child: FlatButton(
color: Theme.of(context).colorScheme.primary,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(8)),
),
child: Text("Im a text"),
onPressed: null,
));
Обновлено:
Добавьте InkWell
внутри Material
виджета и замените FlatButton
на Container
виджет
Material(
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.all(Radius.circular(8)),
),
color: Theme.of(context).colorScheme.primary,
child: InkWell(
onTap: () => true,
splashFactory: InkRipple.splashFactory,
child: Container(
padding: EdgeInsets.symmetric(horizontal: 8, vertical: 4),
child: Text("Im a text"),
),
),
);
Комментарии:
1. я пробовал это, но затем я теряю цвет, который имеет значение «color: Theme.of (context).colorScheme.primary», кнопка становится прозрачной
2. Ну, тогда зачем вам плоская кнопка внутри чернильницы?
3. Чернильница с splashFactory: параметры InkRipple.splashFactory добавляют встроенную анимацию пульсации Android. Вот почему мне нужно использовать inkwell. FlatButton имеет пользовательскую анимацию флаттера
4. Попробуйте удалить FlatButton и поместить текст в
Container
виджет и обернутьInkWell
его вMaterial
виджет. См. Ответ на обновление.