Класс ButtonStyle
Класс ButtonStyle передают в style у ElevatedButton, TextButton и OutlinedButton.
Цвет фона задают через backgroundColor,
текста - foregroundColor,
отступы - padding,
форму - shape.
Копию с правками собирают через
copyWith.
Синтаксис
ButtonStyle(
backgroundColor: WidgetStatePropertyAll(Colors.blue),
padding: WidgetStatePropertyAll(EdgeInsets.all(16)),
)
Параметры
| Параметр | Описание |
|---|---|
backgroundColor |
Цвет фона кнопки. Принимает WidgetStateProperty.
|
foregroundColor |
Цвет текста и значка. Принимает WidgetStateProperty.
|
padding |
Отступы внутри кнопки. Принимает WidgetStateProperty.
|
shape |
Форма границы кнопки. Принимает WidgetStateProperty.
|
Методы
| Метод | Описание |
|---|---|
copyWith |
Копирует объект с заменой полей. |
merge |
Складывает два стиля. Заданное поле второго стиля заменяет поле первого. |
Пример
Давайте применим ButtonStyle к ElevatedButton:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: ElevatedButton(
style: ElevatedButton.styleFrom(
backgroundColor: Colors.teal,
),
onPressed: () {},
child: Text('abcde'),
),
),
),
),
);
}
Кнопка станет бирюзовой с текстом 'abcde'.
Пример
Давайте зададим padding через styleFrom:
import 'package:flutter/material.dart';
void main()
{
runApp(
MaterialApp(
home: Scaffold(
body: Center(
child: TextButton(
style: TextButton.styleFrom(
padding: EdgeInsets.symmetric(horizontal: 32),
),
onPressed: () {},
child: Text('12345'),
),
),
),
),
);
}
У TextButton широкие горизонтальные отступы.
Смотрите также
-
виджет
ElevatedButton,
которому передают style -
виджет
OutlinedButton,
который используетButtonStyleдля контура -
виджет
ThemeData,
откуда кнопки берут стиль по умолчанию -
метод
styleFrom,
который быстро собираетButtonStyle