Чтобы изменить backgroundColor OutlineButton , вы можете использовать DecoratedBox и Theme виджет. В конце этого ответа вы найдете быстрый пример.
В любом случае, я бы по-прежнему рекомендовал , просто используя вместо него FlatButton с атрибутом color
.
Оберните OutlinedButton
внутри DecoratedBox
. Установите shape
вашего DecoratedBox
в ту же форму, что и OutlinedButton
. Теперь вы можете использовать атрибут color
вашего DecoratedBox
, чтобы изменить цвет. В результате все еще будет небольшой отступ вокруг OutlinedButton
. Чтобы удалить это, вы можете обернуть DecoratedBox
внутри Theme
, в котором вы настраиваете ButtonTheme
. Внутри ButtonTheme
вы хотите установить materialTapTargetSize: MaterialTapTargetSize.shrinkWrap
.
Обивка добавлена в Flutter, чтобы увеличить область касания вокруг кнопки до минимального размера 48x48 (источник) . Установка materialTapTargetSize
в MaterialTapTargetSize.shrinkWrap
удаляет этот минимальный размер.
FlatButton
пример:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: FlatButton(
color: Colors.pinkAccent,
shape: CircleBorder(),
onPressed: () => {},
child: Text('A'),
),
),
),
);
}
}
OutlinedButton
пример:
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Center(
child: MyButton(),
),
),
);
}
}
class MyButton extends StatelessWidget {
@override
Widget build(BuildContext context) {
return DecoratedBox(
decoration:
ShapeDecoration(shape: CircleBorder(), color: Colors.pinkAccent),
child: Theme(
data: Theme.of(context).copyWith(
buttonTheme: ButtonTheme.of(context).copyWith(
materialTapTargetSize: MaterialTapTargetSize.shrinkWrap)),
child: OutlineButton(
shape: CircleBorder(),
child: Text('A'),
onPressed: () => {},
),
),
);
}
}