简体   繁体   English

如何解决 Flutter Activity 中的 BOTTOM OVERFLOWED BY 84 PIXLES?

[英]how to resolve BOTTOM OVERFLOWED BY 84 PIXLES in Flutter Activity?

I am new to Flutter I have the following activity, when I click in Text Field Keyboard appears and then the warning eg BOTTOM OVERFLOWED BY 84 PIXLES also appears how can i be able to resolve this issue?我是 Flutter 的新手,我有以下活动,当我单击文本字段键盘时会出现warning例如BOTTOM OVERFLOWED BY 84 PIXLES也出现如何解决此问题? when I tried SingleChildScrollView then empty area("where there is no Widgets") of activity gone white.当我尝试SingleChildScrollView时,活动的空白区域(“没有小部件的地方”)变白了。 Is there any Widget that is missing or i made a mistake in my code?是否缺少任何 Widget 或我在代码中犯了错误?

My Activity我的活动

在此处输入图片说明

here is my code这是我的代码

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:marshal/Payment.dart';

import 'bottomnavigationbar.dart';

class Payment2 extends StatefulWidget {
  @override
  _Payment2State createState() => _Payment2State();
}

class _Payment2State extends State<Payment2> {
  @override
  Widget build(BuildContext context) {
    final PaymentButton = Material(
      elevation: 5.0,
      borderRadius: BorderRadius.circular(30.0),
      color: Colors.red,
      child: MaterialButton(
        minWidth: MediaQuery.of(context).size.width,
        padding: EdgeInsets.fromLTRB(20.0, 15.0, 20.0, 15.0),
        onPressed: () {
          Route route = MaterialPageRoute(builder: (context) => Paymentdone());
          Navigator.pushReplacement(context, route);
        },
        child: Text("Payment",
            textAlign: TextAlign.center,
            style: style.copyWith(
                color: Colors.white, fontWeight: FontWeight.w800)),
      ),
    );
    return Scaffold(
      appBar: AppBar(
        title: Text("Payment"),
        centerTitle: true,
      ),
      body:  Container(
        padding: EdgeInsets.all(16),
        color: Colors.black,
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.start,
          mainAxisAlignment: MainAxisAlignment.start,
          children: <Widget>[
            Padding(
              padding: EdgeInsets.all(25),
            ),
            Text(
              "ENTER YOUR CARD DETAILS",
              style: TextStyle(
                  fontWeight: FontWeight.w400,
                  color: Colors.white,
                  fontSize: 16),
            ),
            Padding(
              padding: EdgeInsets.all(5),
            ),
            Card(
              color: Color(0xFF1E1E1E),
              child: ListTile(
                leading: CircleAvatar(),
                title: Container(
                  child: Row(
                    mainAxisAlignment: MainAxisAlignment.spaceBetween,
                    children: <Widget>[
                      Text(
                        "MasterCard",
                        style: TextStyle(fontSize: 16, color: Colors.white),
                      ),
                      Text(
                        '90 \u0024',
                        style: TextStyle(fontSize: 16, color: Colors.white),
                      ),
                    ],
                  ),
                ),
              ),
            ),
            Padding(
              padding: EdgeInsets.all(12),
            ),
            Card(
              color: Color(0xFF1E1E1E),
              child: cardnumber(),
            ),
            Row(
              children: [
                Container(
                  //height: 60,
                  width: MediaQuery.of(context).size.width * 0.45,
                  color: Color(0xFF1E1E1E),
                  child: TextField(
                    style: style,
                    maxLength: 5,
                    cursorColor: Colors.red,
                    textAlign: TextAlign.left,
                    keyboardType: TextInputType.number,
                    decoration: InputDecoration(
                      hintText: 'MM/YY',
                      hintStyle: TextStyle(fontSize: 16, color: Colors.white),
                      border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(8),
                        borderSide: BorderSide(
                          width: 0,
                          style: BorderStyle.none,
                        ),
                      ),
                      filled: true,
                      contentPadding: EdgeInsets.all(16),
                    ),
                  ),
                ),
                Padding(
                  padding: EdgeInsets.all(1),
                ),
                Container(
                  // height: 50,
                  width: MediaQuery.of(context).size.width * 0.44,
                  color: Color(0xFF1E1E1E),
                  child: TextField(
                    style: style,
                    maxLength: 3,
                    cursorColor: Colors.red,
                    textAlign: TextAlign.left,
                    keyboardType: TextInputType.number,
                    decoration: InputDecoration(
                      hintText: 'CVV',
                      hintStyle: TextStyle(fontSize: 16, color: Colors.white),
                      border: OutlineInputBorder(
                        borderRadius: BorderRadius.circular(8),
                        borderSide: BorderSide(
                          width: 0,
                          style: BorderStyle.none,
                        ),
                      ),
                      filled: true,
                      contentPadding: EdgeInsets.all(16),
                    ),
                  ),
                ),
              ],
            ),
            Container(
              height: 100,
            ),
            PaymentButton,
          ],
        ),
      ),
      bottomNavigationBar: BottomNavigation(),
    );
  }

  Widget cardnumber() {
    return TextField(
      style: style,
      maxLength: 16,
      cursorColor: Colors.red,
      textAlign: TextAlign.left,
      keyboardType: TextInputType.number,
      decoration: InputDecoration(
        hintText: 'XXXX XXXX XXXX 1234',
        hintStyle: TextStyle(fontSize: 16, color: Colors.white),
        border: OutlineInputBorder(
          borderRadius: BorderRadius.circular(8),
          borderSide: BorderSide(
            width: 0,
            style: BorderStyle.none,
          ),
        ),
        filled: true,
        contentPadding: EdgeInsets.all(16),
      ),
    );
  }

  TextStyle style =
      TextStyle(fontFamily: 'Montserrat', color: Colors.white, fontSize: 16.0);
}

只需将resizeToAvoidBottomInset: false添加到您的Scaffold

您也可以将孩子包裹在SingleChildScrollView

Use SingleChildScrollView in body .body使用SingleChildScrollView To avoid white portion problem wrap it inside a Stack .为避免白色部分问题,请将其包裹在Stack

Stack(
    children: <Widget>[
      Container(
        padding: EdgeInsets.all(16),
        color: Colors.black,
      ),
      SingleChildScrollView(
        scrollDirection: Axis.vertical,
        child: Container(
          padding: EdgeInsets.all(16),
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.start,
            mainAxisAlignment: MainAxisAlignment.start,
            children: <Widget>[
              Padding(
                padding: EdgeInsets.all(25),
              ),
              Text(
                "ENTER YOUR CARD DETAILS",
                style: TextStyle(
                    fontWeight: FontWeight.w400,
                    color: Colors.white,
                    fontSize: 16),
              ),
              Padding(
                padding: EdgeInsets.all(5),
              ),
              Card(
                color: Color(0xFF1E1E1E),
                child: ListTile(
                  leading: CircleAvatar(),
                  title: Container(
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: <Widget>[
                        Text(
                          "MasterCard",
                          style: TextStyle(fontSize: 16, color: Colors.white),
                        ),
                        Text(
                          '90 \u0024',
                          style: TextStyle(fontSize: 16, color: Colors.white),
                        ),
                      ],
                    ),
                  ),
                ),
              ),
              Padding(
                padding: EdgeInsets.all(12),
              ),
              Card(
                color: Color(0xFF1E1E1E),
                child: cardnumber(),
              ),
              Row(
                children: [
                  Container(
                    //height: 60,
                    width: MediaQuery.of(context).size.width * 0.45,
                    color: Color(0xFF1E1E1E),
                    child: TextField(
                      style: style,
                      maxLength: 5,
                      cursorColor: Colors.red,
                      textAlign: TextAlign.left,
                      keyboardType: TextInputType.number,
                      decoration: InputDecoration(
                        hintText: 'MM/YY',
                        hintStyle: TextStyle(fontSize: 16, color: Colors.white),
                        border: OutlineInputBorder(
                          borderRadius: BorderRadius.circular(8),
                          borderSide: BorderSide(
                            width: 0,
                            style: BorderStyle.none,
                          ),
                        ),
                        filled: true,
                        contentPadding: EdgeInsets.all(16),
                      ),
                    ),
                  ),
                  Padding(
                    padding: EdgeInsets.all(1),
                  ),
                  Container(
                    // height: 50,
                    width: MediaQuery.of(context).size.width * 0.44,
                    color: Color(0xFF1E1E1E),
                    child: TextField(
                      style: style,
                      maxLength: 3,
                      cursorColor: Colors.red,
                      textAlign: TextAlign.left,
                      keyboardType: TextInputType.number,
                      decoration: InputDecoration(
                        hintText: 'CVV',
                        hintStyle: TextStyle(fontSize: 16, color: Colors.white),
                        border: OutlineInputBorder(
                          borderRadius: BorderRadius.circular(8),
                          borderSide: BorderSide(
                            width: 0,
                            style: BorderStyle.none,
                          ),
                        ),
                        filled: true,
                        contentPadding: EdgeInsets.all(16),
                      ),
                    ),
                  ),
                ],
              ),
              Container(
                height: 100,
              ),
              PaymentButton,
            ],
          ),
        ),
      )
    ],
  )

using a SingleChildScrollView is the right way to go.使用 SingleChildScrollView 是正确的方法。

in order to fix the issue you talked about, delete the color attribute from the container, and move it to the scaffold background color attribute:为了解决你所说的问题,从容器中删除颜色属性,并将其移动到脚手架背景颜色属性中:

return Scaffold(
      backgroundColor: Colors.black,
      appBar: AppBar(
        title: Text("Payment"),
        centerTitle: true,
      ),
      body:  SingleChildScrollView(
        child: Container(
          padding: EdgeInsets.all(16),
          child: Column(
            // the rest of the widgets...
          ),
        ),
      );

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM