class _HomePageState extends State<HomePage> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("..."),
),
body: Container(
color: Colors.green,
child: OutlineButton(
onPressed: () { },
color: Colors.orange,
highlightColor: Colors.pink,
child: Container(
color: Colors.yellow,
child: Text("A"),
),
shape: CircleBorder(),
),
),
);
}
}
上面的代码给出了一个透明的按钮。如何获得橙色大纲按钮?
最佳答案
要修改OutlineButton的背景色,可以使用DecoratedBox和Theme小部件。在这个答案的最后,你会找到一个快速的例子。
不管怎样,我还是建议您使用带有color
属性的FlatButton来代替。
将你的OutlinedButton
包裹在一个DecoratedBox
内。将shape
的DecoratedBox
设置为与OutlinedButton
相同的形状。现在可以使用color
的DecoratedBox
属性更改颜色。结果仍然会在OutlinedButton
周围有一个小填充。要删除此项,可以将DecoratedBox
包装在调整Theme
的ButtonTheme
中。在ButtonTheme
中,您要设置materialTapTargetSize: MaterialTapTargetSize.shrinkWrap
。
在颤振内部添加填充物,以将按钮周围的抽头区域增加到最小尺寸48x48(source)。将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: () => {},
),
),
);
}
}