Mat*_*ani 3 dart flutter flutter-container flutter-widget
我正在创建一个搜索小部件,我希望它有一点高度,我可以通过使用 Material 小部件来做到这一点,但是 Material 还具有其他属性,例如颜色,并且当我用 Material 小部件包裹容器时,它会创建奇怪的边缘。
Widget search(BuildContext context) {
var theme = Provider.of<ThemeNotifier>(context);
return Container(
margin: EdgeInsets.only(top: 28, left: 10, right: 10),
child: Material(
elevation: 10,
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(20),
color: theme.getTheme().materialTheme.buttonColor,
),
padding: EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
InkWell(onTap: () => print("Menu tapped"), child: Icon(Icons.menu)),
Expanded(
child: TextField(
decoration: InputDecoration(
contentPadding: EdgeInsets.only(left: 15, right: 15),
hintText: "Search City",
filled: false,
border: InputBorder.none),
),
),
Icon(Icons.search),
],
),
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
这是我的小部件的样子:
作为解决方法,您可以使用 BoxShadow 而不是材质标高。
Widget search(BuildContext context) {
return Container(
margin: EdgeInsets.only(top: 28, left: 10, right: 10),
child: Container(
decoration: BoxDecoration(
boxShadow: [
BoxShadow(blurRadius: 5.0, spreadRadius: 1.0, color: Colors.grey.shade400)
],
borderRadius: BorderRadius.circular(20),
color: Colors.grey.shade200,
),
padding: EdgeInsets.all(10),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
InkWell(onTap: () => print("Menu tapped"), child: Icon(Icons.menu)),
Expanded(
child: TextField(
decoration: InputDecoration(
contentPadding: EdgeInsets.only(left: 15, right: 15),
hintText: "Search City",
filled: false,
border: InputBorder.none),
),
),
Icon(Icons.search),
],
),
),
);
}
Run Code Online (Sandbox Code Playgroud)
^ 替换主题提供商提供的颜色。
| 归档时间: |
|
| 查看次数: |
2147 次 |
| 最近记录: |