自定义卡形状颤振SDK

Dev*_*ine 23 flutter flutter-layout

我刚开始学习Flutter,我用GridView开发了一个应用程序.GridView项目是卡.默认卡片形状为矩形,半径为4.

我知道Card Widget有shape属性,它需要ShapeBorder类.但我无法找到如何使用ShapeBorder类并在GridView中自定义我的卡.

提前致谢.

azi*_*iza 69

你可以用它这样

在此输入图像描述

Card(
  shape: RoundedRectangleBorder(
    borderRadius: BorderRadius.circular(15.0),
  ),
  child: Text(
    'Card with circular border',
    textScaleFactor: 1.2,
  ),
),
Card(
  shape: BeveledRectangleBorder(
    borderRadius: BorderRadius.circular(10.0),
  ),
  child: Text(
    'Card with Beveled border',
    textScaleFactor: 1.2,
  ),
),
Card(
  shape: StadiumBorder(
  side: BorderSide(
    color: Colors.black,
    width: 2.0,
  ),
),
  child: Text(
    'Card with Beveled border',
    textScaleFactor: 1.2,
  ),
),
Run Code Online (Sandbox Code Playgroud)

  • 使用RoundedRectangleBorder我也能够获得卡的圆形形状.但是里面的图像 - 不会被卡片的圆形图像形状裁剪掉.我们怎么做到这一点?谢谢! (4认同)
  • @SantanuKarar您将图像包装在ClipRRect()中-https://docs.flutter.io/flutter/widgets/ClipRRect-class.html (2认同)

Luc*_*nto 68

当卡片我总是使用 RoundedRectangleBorder。

Card(
  color: Colors.grey[900],
  shape: RoundedRectangleBorder(
    side: BorderSide(color: Colors.white70, width: 1),
    borderRadius: BorderRadius.circular(10),
  ),
  margin: EdgeInsets.all(20.0),
  child: Container(
    child: Column(
        children: <Widget>[
        ListTile(
            title: Text(
            'example',
            style: TextStyle(fontSize: 18, color: Colors.white),
            ),
        ),
        ],
    ),
  ),
),
Run Code Online (Sandbox Code Playgroud)


mic*_*ize 20

您还可以使用以下命令全局自定义卡片主题ThemeData.cardTheme

MaterialApp(
  title: 'savvy',
  theme: ThemeData(
    cardTheme: CardTheme(
      shape: RoundedRectangleBorder(
        borderRadius: const BorderRadius.all(
          Radius.circular(8.0),
        ),
      ),
    ),
    // ...
Run Code Online (Sandbox Code Playgroud)


C. *_*dal 12

上述问题的替代解决方案

Card(
  shape: RoundedRectangleBorder(
     borderRadius: BorderRadius.only(topLeft: Radius.circular(20), topRight: Radius.circular(20))),
  color: Colors.white,
  child: ...
)
Run Code Online (Sandbox Code Playgroud)

您可以使用 BorderRadius.only() 来自定义您希望管理的角。


小智 8

自定义卡片半径的更好方法(还有其他选项)是全局设置卡片主题。这样您就可以在整个应用程序中为 Card 使用相同的样式。您也可以将此方法用于许多其他小部件。

对于卡片主题,您可以使用 ThemeData.cardTheme

MaterialApp(
 title: 'MySampleApp',
 theme: ThemeData(
   cardTheme: CardTheme(
     shape: RoundedRectangleBorder(
       borderRadius: BorderRadius.all(
         Radius.circular(16.0),
       ),
     ),
   ),
// ............
// ............
Run Code Online (Sandbox Code Playgroud)