Метод 1: использование виджета ClipRRect
Drawer(
child: ClipRRect(
borderRadius: BorderRadius.only(
topRight: Radius.circular(20.0),
bottomRight: Radius.circular(20.0),
),
child: Container(
// Drawer content
),
),
)
Метод 2. Пользовательский виджет ящика
class RoundedDrawer extends StatelessWidget {
final Widget child;
final double cornerRadius;
RoundedDrawer({required this.child, this.cornerRadius = 20.0});
@override
Widget build(BuildContext context) {
return ClipRRect(
borderRadius: BorderRadius.only(
topRight: Radius.circular(cornerRadius),
bottomRight: Radius.circular(cornerRadius),
),
child: Drawer(
child: child,
),
);
}
}
// Usage:
RoundedDrawer(
child: Container(
// Drawer content
),
)
Метод 3: украшение ящика
Drawer(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(
topRight: Radius.circular(20.0),
bottomRight: Radius.circular(20.0),
),
),
child: Container(
// Drawer content
),
)
Метод 4: специальные каркасы для выдвижных ящиков
class RoundedDrawerScaffold extends StatelessWidget {
final Widget drawer;
final Widget body;
final double cornerRadius;
RoundedDrawerScaffold({required this.drawer, required this.body, this.cornerRadius = 20.0});
@override
Widget build(BuildContext context) {
return Scaffold(
body: Row(
children: [
ClipRRect(
borderRadius: BorderRadius.only(
topRight: Radius.circular(cornerRadius),
bottomRight: Radius.circular(cornerRadius),
),
child: drawer,
),
Expanded(child: body),
],
),
);
}
}
// Usage:
RoundedDrawerScaffold(
drawer: Drawer(
child: Container(
// Drawer content
),
),
body: Container(
// Body content
),
)
Это всего лишь несколько способов добиться эффекта закругленных углов ящика во Flutter. Вы можете выбрать тот, который соответствует вашему конкретному случаю использования.