繁体   English   中英

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

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

我是 Flutter 的新手,我有以下活动,当我单击文本字段键盘时会出现warning例如BOTTOM OVERFLOWED BY 84 PIXLES也出现如何解决此问题? 当我尝试SingleChildScrollView时,活动的空白区域(“没有小部件的地方”)变白了。 是否缺少任何 Widget 或我在代码中犯了错误?

我的活动

在此处输入图片说明

这是我的代码

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

body使用SingleChildScrollView 为避免白色部分问题,请将其包裹在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,
            ],
          ),
        ),
      )
    ],
  )

使用 SingleChildScrollView 是正确的方法。

为了解决你所说的问题,从容器中删除颜色属性,并将其移动到脚手架背景颜色属性中:

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