自定义卡形状颤振SDK

时间:2018-06-08 08:46:42

标签: flutter flutter-layout

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

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

先谢谢。

5 个答案:

答案 0 :(得分:28)

您可以使用this way

enter image description here

         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(width: 2.0)),
              child: Text(
                'Card with Beveled border',
                textScaleFactor: 1.2,
              ),
            ),

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

当Card我总是使用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),
            ),
        ),
        ],
    ),
  ),
),

答案 4 :(得分:1)

上述替代解决方案

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

您可以使用BorderRadius.only()定制要管理的角。