画像を背景にしたカードを作成しようとしています。問題は、画像がカードからはみ出すため、ドンのコーナーが表示されないことです。
カードの背景として画像を設定するか、カードのオーバーフロー動作をオーバーフローなしに設定する必要があります。しかし、そのためのプロパティは見つかりませんでした。
これが私のカードです:
Widget _buildProgrammCard() {
return Container(
height: 250,
child: Card(
child: Image.asset(
'assets/Push.jpg',
fit: BoxFit.cover,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
elevation: 5,
margin: EdgeInsets.all(10),
),
);
そして、それはこのようになります:
他の方法を使用せずに-ClipRRect
ウィジェット-を設定するにはsemanticContainer: true,
/Card
ウィジェット。
以下のコード例:
Card(
semanticContainer: true,
clipBehavior: Clip.antiAliasWithSaveLayer,
child: Image.network(
'https://placeimg.com/640/480/any',
fit: BoxFit.fill,
),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(10.0),
),
elevation: 5,
margin: EdgeInsets.all(10),
),
出力:
画像をClipRRect
でラップできます
ClipRRect(
borderRadius: BorderRadius.vertical(top: Radius.circular(10.0)),
child: Image.network(...),
)
カードコーナーを画像の上に描画したい方は、
borderOnForeground: true
import 'package:flutter/material.Dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Ejemplo"),
),
body: Center(child: SwipeList()));
}
}
class SwipeList extends StatefulWidget {
@override
State<StatefulWidget> createState() {
return ListItemWidget();
}
}
class ListItemWidget extends State<SwipeList> {
List items = getDummyList();
@override
Widget build(BuildContext context) {
return Container(
child: ListView.builder(
itemCount: items.length,
itemBuilder: (context, index) {
return Dismissible(
key: Key(items[index]),
background: Container(
alignment: AlignmentDirectional.centerEnd,
color: Colors.red,
child: Icon(
Icons.delete,
color: Colors.white,
),
),
onDismissed: (direction) {
setState(() {
items.removeAt(index);
});
},
direction: DismissDirection.endToStart,
child: Card(
margin: EdgeInsets.only(left: 10, right: 10, top: 12),
elevation: 8,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12.0),
),
semanticContainer: true,
clipBehavior: Clip.antiAliasWithSaveLayer,
child: Container(
height: 135,
child: Stack(children: <Widget>[
Positioned(
top: 0,
left: 0,
right: 0,
child: Container(
color: Colors.white,
child: Column(
children: <Widget>[
Image.network(
'https://placeimg.com/640/480/any',
fit: BoxFit.fitHeight,
),
],
))),
Positioned(
top: 20,
left: 0,
right: 0,
child: Container(
child: Column(
children: <Widget>[
Text(items[index],
style: TextStyle(
fontWeight: FontWeight.bold,
fontSize: 25,
color: Colors.white),
textAlign: TextAlign.center),
],
),
)),
]),
)),
);
},
));
}
static List getDummyList() {
List list = List.generate(5, (i) {
return "Item ${i + 1}";
});
print(list);
return list;
}
}