Как я могу скопировать другой стиль кнопок?

#dart #flutter #flutter-layout

#dart #флаттер #flutter-layout

Вопрос:

У меня есть TextField виджет с надписью «Description».

Я пытаюсь сделать так, чтобы это текстовое поле имело тот же стиль, FlatButton что и виджет

Я читал об использовании copyWith , но я не совсем понимаю, как его использовать.

Я тоже смотрел на https://github.com/flutter/flutter/blob/master/packages/flutter/lib/src/material/flat_button .дарт, но я действительно не думаю, что это многое объясняет

 return TextField(
  style: TextStyle(),
  onChanged: _bloc.changeEventDescription,
  decoration: InputDecoration(
      labelText: "Description", border: InputBorder.none),
);
 

Установка border: InputBorder.none , по крайней мере, избавилась от линии под FlatButton

Мечта состоит в том TextField , чтобы выглядеть как дефолт FlatButton

Спасибо!!

Комментарии:

1. хм, добавьте несколько картинок о том, что вам нужно. Тема является унаследованным виджетом, поэтому вы можете получить доступ из любого виджета, используя Theme.of (контекст).

2. @diegoveloper Как мне получить цвет шрифта, стиль и размер плоской кнопки по умолчанию, используя это?

3. это разные типы виджетов, но вы можете попробовать создать собственную плоскую кнопку, не могли бы вы добавить картинку о том, что вам нужно?

4. Я понимаю, но я бы хотел, чтобы у flatbutton было текстовое поле при нажатии. Я не уверен в том, как показать изображение того, что я хочу, оно будет буквально выглядеть как плоская кнопка, если ее не щелкнуть

5. Вы можете настроить flatbutton , поэтому мы не знаем, какой тип дизайна вы хотели бы

Ответ №1:

Вы можете расширить FlatButton и создать пользовательский виджет (точно так же, как FlatButton extends MaterialButton ). Итак, ваш класс будет выглядеть примерно так —

 class myButton extends FlatButton {}
 

Вы можете переопределить дочерний TextFormField элемент.

Комментарии:

1. О, это имеет смысл. Как бы я мог использовать это, чтобы на самом деле создать текстовое поле, которое выглядит как плоская кнопка?

2. Скажите мне кое-что, почему бы вам просто не сделать это? FlatButton( color: Colors.yellow, onPressed: () { print('pressed'); }, child: TextField( decoration: null, ), ) (Вы можете добавить оформление, если хотите)

3. Я думаю, мой вопрос в том, каков размер шрифта по умолчанию и шрифт плоской кнопки?

4. Это то же RawMaterialButton самое, что и, и вы можете использовать ButtonTheme для этого. Обратите внимание на этот код в FlatButton highlightColor: buttonTheme.getHighlightColor(this), splashColor: buttonTheme.getSplashColor(this), elevation: buttonTheme.getElevation(this), highlightElevation: buttonTheme.getHighlightElevation(this), disabledElevation: buttonTheme.getDisabledElevation(this), padding: buttonTheme.getPadding(this)