Mok*_*leb 0 flutter flutter-layout
我正在设计使用flutter的移动应用程序,但我不知道要设计自定义按钮或listTile还是任何类型的小部件,如下图所示

您可以通过组成Widget来创建该设计,这就是Flutter的优点,这是我制作的示例:
class MyCustomButton extends StatelessWidget {
final String title;
final Color color;
final IconData icon;
final radius = 35.0;
final VoidCallback onTap;
const MyCustomButton({
Key key,
this.title,
this.color,
this.icon,
this.onTap,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return Material(
color: Colors.transparent,
clipBehavior: Clip.hardEdge,
child: InkWell(
onTap: onTap,
child: SizedBox(
height: 2 * radius,
child: Stack(
fit: StackFit.expand,
children: [
Positioned(
top: 0.0,
left: radius,
right: 0.0,
bottom: 0.0,
child: Align(
child: Container(
height: radius + 10,
color: color,
alignment: Alignment.center,
child: Text(
title,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 22,
color: Colors.white,
fontWeight: FontWeight.w400,
),
),
),
),
),
Align(
alignment: Alignment.centerLeft,
child: Container(
height: 2 * radius,
width: 2 * radius,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: color,
),
child: Center(
child: Container(
height: 2 * radius - 5,
width: 2 * radius - 5,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: Colors.white,
),
child: Icon(icon),
),
),
),
),
],
),
),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
用法
SizedBox(
width: 300,
child: MyCustomButton(
title: "Click to Login",
color: Colors.orange,
icon: Icons.lock_open,
onTap: () {
print("Tapped here");
},
),
),
Run Code Online (Sandbox Code Playgroud)
结果
您可以在这里找到更多信息:https : //flutter.dev/docs/development/ui/layout
| 归档时间: |
|
| 查看次数: |
171 次 |
| 最近记录: |