5 способов добавить рамку вокруг TextButton во Flutter

В Flutter виджет TextButton предоставляет простой способ создания интерактивных кнопок с текстом. Хотя TextButton не имеет встроенного свойства border, существует несколько методов, которые можно использовать для добавления границы вокруг TextButton. В этой статье мы рассмотрим пять различных подходов на примерах кода.

Метод 1: Виджет-контейнер
Один из самых простых способов добавить рамку вокруг TextButton — обернуть ее виджетом-контейнером и настроить его свойство оформления. Вот пример:

Container(
  decoration: BoxDecoration(
    border: Border.all(
      color: Colors.black,
      width: 1.0,
    ),
    borderRadius: BorderRadius.circular(8.0),
  ),
  child: TextButton(
    onPressed: () {
      // Button action
    },
    child: Text('Button'),
  ),
)

Метод 2: Виджет материала
Другой подход — обернуть TextButton виджетом «Материал» и настроить свойства его формы и границы. Вот пример:

Material(
  shape: RoundedRectangleBorder(
    side: BorderSide(
      color: Colors.black,
      width: 1.0,
    ),
    borderRadius: BorderRadius.circular(8.0),
  ),
  child: TextButton(
    onPressed: () {
      // Button action
    },
    child: Text('Button'),
  ),
)

Метод 3: Виджет «Чернила»
Виджет «Чернила» позволяет добавлять эффекты брызг чернил к виджетам «Материал». Обернув TextButton виджетом Ink, вы можете добиться эффекта кнопки с рамкой. Вот пример:

Ink(
  decoration: BoxDecoration(
    border: Border.all(
      color: Colors.black,
      width: 1.0,
    ),
    borderRadius: BorderRadius.circular(8.0),
  ),
  child: TextButton(
    onPressed: () {
      // Button action
    },
    child: Text('Button'),
  ),
)

Метод 4: виджет пользовательской кнопки
Если вы часто используете кнопки с рамкой в ​​своем приложении, вы можете создать виджет пользовательской кнопки, который инкапсулирует стиль границы. Вот пример:

class BorderedButton extends StatelessWidget {
  final Widget child;
  final VoidCallback onPressed;
  const BorderedButton({required this.child, required this.onPressed});
  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: BoxDecoration(
        border: Border.all(
          color: Colors.black,
          width: 1.0,
        ),
        borderRadius: BorderRadius.circular(8.0),
      ),
      child: TextButton(
        onPressed: onPressed,
        child: child,
      ),
    );
  }
}
// Usage:
BorderedButton(
  onPressed: () {
    // Button action
  },
  child: Text('Button'),
)

Метод 5: Виджет ButtonTheme
Виджет ButtonTheme позволяет определить общий набор стилей для кнопок в его поддереве. Настраивая свойства границы и формы кнопки с помощью ButtonTheme, вы можете получить TextButton с рамкой. Вот пример:

ButtonTheme(
  shape: RoundedRectangleBorder(
    side: BorderSide(
      color: Colors.black,
      width: 1.0,
    ),
    borderRadius: BorderRadius.circular(8.0),
  ),
  child: TextButton(
    onPressed: () {
      // Button action
    },
    child: Text('Button'),
  ),
)

В этой статье мы рассмотрели пять различных способов добавления границы вокруг TextButton во Flutter. Каждый метод обеспечивает уникальный подход для достижения желаемого эффекта кнопки с рамкой. Используя эти методы, вы можете повысить визуальную привлекательность пользовательского интерфейса вашего приложения Flutter и создать выделяющиеся кнопки.

Не забудьте выбрать метод, который лучше всего соответствует дизайну и требованиям вашего приложения. Поэкспериментируйте с разными цветами, шириной и радиусами границ, чтобы создать кнопки, соответствующие эстетике вашего приложения.

Реализуя эти методы, вы можете создавать визуально привлекательные и интерактивные кнопки в своем приложении Flutter.