【问题标题】:How to position this card and text in Flutter?如何在 Flutter 中定位这张卡片和文字?
【发布时间】:2019-09-19 16:47:23
【问题描述】:

我正在将编写 Kotlin 的应用程序重新编写到 Flutter,但我的布局很困难。

这是我想在 Flutter 中重新创建的 Kotlin 应用程序的照片:

这是我的 Flutter 应用程序的照片:

如您所见,我的按钮式卡片(此卡片必须模仿按钮)不在我的屏幕末尾。我希望它与我的 Kotlin 应用程序中的完全一样。

我还希望我的中心文本是响应式的,所以当我以 18:9 的比例在屏幕上打开我的 Flutter 应用程序时,它需要填充空白区域。

如果有人帮助我,我会非常高兴。

我的 Flutter 代码:

import 'package:flutter/material.dart';

class GeneratedCouponScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: Container(
        padding: EdgeInsets.all(16.0),
        child: SafeArea(
          child: Column(
            children: [
              Container(
                child: Row(
                  mainAxisAlignment: MainAxisAlignment.spaceBetween,
                  children: [
                    Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text('DATA WYDANIA:', style: TextStyle(color: Colors.black)),
                        Text('10/09/2018', style: TextStyle(color: Colors.black))
                      ],
                    ),
                    Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      children: [
                        Text('UNIKALNY KOD:', style: TextStyle(color: Colors.black)),
                        Text('e-tf-74-T', style: TextStyle(color: Colors.black),)
                      ],
                    )
                  ],
                ),
              ),
              Container(
                padding: EdgeInsets.only(top: 8.0),
                child: Image.asset('assets/images/coupon_hamburger.png'),
              ),
              Container(
                padding: EdgeInsets.only(top: 8.0),
                child: Text('Kupon ten upoważnia upoważnia do jednoktronego odbioru produktu gratis przy kolejnym dowolnym zakupie z oferty klasycznej. Kupon wazny jest przez 7 dni od czasu jego wygenerowania i może być zrealizowany w dowolnej restauracji McDonald\'s w Polsce z wyłączeniem restauracji znajdujących się na terenie Portu Lotniczego im. Fryderyka Chopina w Warszawie oraz Portu Lotniczego im. Lecha Wałęsy w Gdańsku. Szczegółowy regulamin ankiety "Opinia Gości" znajduje się na stronie www.mcdonalds.pl w sekcji Regulaminy', style: TextStyle(color: Colors.black),),
              ),
              Container(
                padding: EdgeInsets.only(top: 8.0),
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: [
                    Card(
                      child: Container(
                        height: 95.0,
                        color: Colors.orange[400],
                        child: Center(
                          child: Column(
                            mainAxisAlignment: MainAxisAlignment.center,
                            children: [
                              Text('DRUKUJ /', style: TextStyle(fontSize: 30.0),),
                              Text('ZAPISZ JAKO PDF', style: TextStyle(fontSize: 30.0),)
                            ],
                          ),
                        ),
                      ),
                    ),

                  ],
                ),
              )
            ],
          ),
        ),
      )
    );
  }
}

【问题讨论】:

  • 我希望我的按钮式卡片位于屏幕底部,并且我的主文本具有响应性,因此如果我在 18:9 比例屏幕上打开我的应用程序,文本将能够填充空白处。
  • 我不知道如何将我的卡片移动到屏幕底部。
  • 对不起,我忘了看你的帖子。
  • 好的,谢谢你的回答!

标签: flutter dart


【解决方案1】:
class GeneratedCouponScreen extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
        backgroundColor: Colors.white,
        body: Container(
          padding: EdgeInsets.all(16.0),
          child: SafeArea(
            child: Column(
              children: [
                Container(
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: [
                      Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Text('DATA WYDANIA:', style: TextStyle(color: Colors.black)),
                          Text('10/09/2018', style: TextStyle(color: Colors.black))
                        ],
                      ),
                      Column(
                        crossAxisAlignment: CrossAxisAlignment.start,
                        children: [
                          Text('UNIKALNY KOD:', style: TextStyle(color: Colors.black)),
                          Text('e-tf-74-T', style: TextStyle(color: Colors.black),)
                        ],
                      )
                    ],
                  ),
                ),
                Container(
                  padding: EdgeInsets.only(top: 8.0),
                  child: Image.asset(chocolateImage),
                ),
                Container(
                  padding: EdgeInsets.only(top: 8.0),
                  child: Text('Kupon ten upoważnia upoważnia do jednoktronego odbioru produktu gratis przy kolejnym dowolnym zakupie z oferty klasycznej. Kupon wazny jest przez 7 dni od czasu jego wygenerowania i może być zrealizowany w dowolnej restauracji McDonald\'s w Polsce z wyłączeniem restauracji znajdujących się na terenie Portu Lotniczego im. Fryderyka Chopina w Warszawie oraz Portu Lotniczego im. Lecha Wałęsy w Gdańsku. Szczegółowy regulamin ankiety "Opinia Gości" znajduje się na stronie www.mcdonalds.pl w sekcji Regulaminy', style: TextStyle(color: Colors.black),),
                ),
                Spacer(), // add this
                Container(
                  padding: EdgeInsets.only(top: 8.0),
                  child: Column(
                    crossAxisAlignment: CrossAxisAlignment.stretch,
                    children: [
                      Card(
                        child: Container(
                          height: 95.0,
                          color: Colors.orange[400],
                          child: Center(
                            child: Column(
                              mainAxisAlignment: MainAxisAlignment.center,
                              children: [
                                Text('DRUKUJ /', style: TextStyle(fontSize: 30.0),),
                                Text('ZAPISZ JAKO PDF', style: TextStyle(fontSize: 30.0),)
                              ],
                            ),
                          ),
                        ),
                      ),

                    ],
                  ),
                )
              ],
            ),
          ),
        )
    );
  }
}

对于 18:9 部分,您需要在 AndroidManifest.xml 文件的标签中添加以下内容。

<meta-data android:name="android.max_aspect" 
     android:value="2.1" />

【讨论】:

    猜你喜欢
    • 2023-01-11
    • 2019-03-08
    • 2021-02-28
    • 2020-01-22
    • 1970-01-01
    • 2018-05-12
    • 2021-09-13
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多