首页 > 解决方案 > 创建适当的颤振 UI

问题描述

我正在尝试创建下面的图像来颤动。试图遵循一些示例,但无法获得正确的组合。

在此处输入图像描述

计划是在下一阶段连接到 Firebase。所以,现在我必须创建一张卡片,然后复制它。但是,我无法通过反复试验获得正确的 UI。非常感谢您对此的任何帮助。

到目前为止,以下是我所拥有的。

import 'package:flutter/material.dart';

class liberPage extends StatefulWidget {
  @override
  _liberPage createState() => new _liberPage();
}

class _liberPage extends State<liberPage> {
  final ShapeBorder shape;
  @override
  Widget build(BuildContext context) {
   return  new Container(
     child: new Column(
         mainAxisAlignment: MainAxisAlignment.start,
         mainAxisSize: MainAxisSize.min,
         crossAxisAlignment: CrossAxisAlignment.center,

         children: <Widget>[

           new Row(
               mainAxisAlignment: MainAxisAlignment.end,
               mainAxisSize: MainAxisSize.min,
               crossAxisAlignment: CrossAxisAlignment.end,
               children: <Widget>[
               new Card(
                 elevation: 10.0,
                 shape: shape,
                 color: Colors.blue,
                 margin: EdgeInsets.only(top: 20.0),

                 child: new Column(


                   children: <Widget>[

                     new Icon(
                         Icons.ac_unit,
                       size: 100.0,

                     ),
                     new Text(
                         "Test",
                       textAlign: TextAlign.left,
                     ),
                     new Icon(
                       Icons.menu,
                       size: 100.0,

                     ),

                   ],

                 ),
               ),


               new Card(
                 elevation: 10.0,
                 color: Colors.yellow,
                 child: new Column(

                   children: <Widget>[
                     new Icon(
                       Icons.ac_unit,
                       size: 100.0,

                     ),

                   ],

                 ),
               )

               ]

           )
         ]

     ),

   );
  }
}

标签: dartflutterflutter-layout

解决方案


您需要的是GridView带有Stack小部件,而不是嵌套Row的 s 和Columns。我创建了可能有帮助的最小 UI。

在此处输入图像描述

class DishCardExample extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: GridView.count(
        shrinkWrap: true,
        crossAxisCount: 2,
        children: List.generate(
          10,
          (i) => Card(
                child: Column(
                  // mainAxisSize: MainAxisSize.max,
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[
                    Expanded(
                      child: Stack(
                        fit: StackFit.expand,
                        children: <Widget>[
                          Container(
                            height: MediaQuery.of(context).size.height / 4,
                            width: MediaQuery.of(context).size.height / 2.5,
                            child: DecoratedBox(
                              decoration: BoxDecoration(
                                image: DecorationImage(
                                    image: NetworkImage(
                                        "https://i.imgur.com/FtaGNck.jpg"),
                                    fit: BoxFit.cover),
                              ),
                            ),
                          ),
                          Padding(
                            padding: const EdgeInsets.all(8.0),
                            child: Align(
                              alignment: FractionalOffset.topLeft,
                              child: CircleAvatar(
                                backgroundColor: Colors.redAccent,
                                radius: 15.0,
                                child: Text(
                                  "NEW",
                                  textScaleFactor: 0.5,
                                ),
                              ),
                            ),
                          ),
                          Align(
                            alignment: FractionalOffset.topRight,
                            child: Container(
                              color: Colors.blueAccent,
                              height: 35.0,
                              width: 35.0,
                              child: Center(
                                child: Column(
                                  mainAxisAlignment: MainAxisAlignment.center,
                                  children: <Widget>[
                                    Icon(Icons.account_circle),
                                    Text(
                                      "1P",
                                      textScaleFactor: 0.5,
                                    ),
                                  ],
                                ),
                              ),
                            ),
                          ),
                        ],
                      ),
                    ),
                    Center(
                      child: Container(
                        padding: const EdgeInsets.all(8.0),
                        alignment: FractionalOffset.bottomCenter,
                        child: Text(
                          "AWESOME DISH",
                          style: TextStyle(
                            fontWeight: FontWeight.w700,
                          ),
                        ),
                      ),
                    ),
                    Row(
                      mainAxisAlignment: MainAxisAlignment.spaceAround,
                      children: <Widget>[
                        FlatButton(
                          child: Text(
                            "Add To Cart",
                            style: TextStyle(color: Colors.grey[500]),
                          ),
                          onPressed: () => null,
                        ),
                        Text(
                          "\$5",
                          style: TextStyle(color: Colors.grey[500]),
                        )
                      ],
                    )
                  ],
                ),
              ),
        ),
      ),
    );
  }
}

推荐阅读