Создание правильного пользовательского интерфейса - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь создать изображение ниже, чтобы трепетать.Попытка следовать некоторым примерам, но не в состоянии получить правильное сочетание.

enter image description here

Планируется подключиться к firebase на следующем этапе.Итак, сейчас я должен создать одну карту, а затем скопировать ее.Но у меня возникли проблемы с правильной настройкой пользовательского интерфейса методом проб и ошибок.Любая помощь, обращающаяся к этому, очень ценится.

Так далеко, что я имею ниже.

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,

                     ),

                   ],

                 ),
               )

               ]

           )
         ]

     ),

   );
  }
}

1 Ответ

0 голосов
/ 23 мая 2018

То, что вам нужно, это GridView с Stack виджетами, а не вложенными Row с и Column с.Я создал минимальный пользовательский интерфейс, который может помочь.

enter image description here

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]),
                        )
                      ],
                    )
                  ],
                ),
              ),
        ),
      ),
    );
  }
}
...