为什么图标按钮不居中?

Mic*_*hem 5 user-interface flutter

我正在开发 Flutter 应用程序,但我不明白为什么我的图标按钮不在页面中间居中。我把我的代码包裹在一个Center()

这是我的页面:

https://imgur.com/a/YlCW3Xu

这是我的代码:

import "package:flutter/material.dart";
import 'package:font_awesome_flutter/font_awesome_flutter.dart';

class LogInScreen extends StatefulWidget {
  @override
  _LogInScreenState createState() => new _LogInScreenState();
}

class _LogInScreenState extends State<LogInScreen> {
  String _email, _password;
  @override
  Widget build(BuildContext context) {
    return new Scaffold(
      body: Center(
          child: ListView(
        children: <Widget>[
          Column(children: <Widget>[
            new Container(
              padding: (EdgeInsets.only(top: 50)),
              child: Text(
                "Sign In",
                style: TextStyle(
                  fontSize: 40,
                ),
              ),
            ),
            new Container(
                padding: (EdgeInsets.only(top: 50, left: 35, right: 35)),
                child: Column(children: <Widget>[
                  new Form(
                      child: new Column(children: <Widget>[
                    Padding(
                      padding: EdgeInsets.only(top: 20),
                      child: new RaisedButton(
                        onPressed: () {},
                        color: Colors.blue,
                        textColor: Colors.white,
                        child: const Text('Login'),
                      ),
                    ),
                  ])),
                ])),
            new Container(
              padding: EdgeInsets.only(top: 40),
              child: Column(
                children: <Widget>[
                  new Text("Or login with"),
                ],
              ),
            ),
          ]),
          new Center(
              child: new Row(
            children: <Widget>[
              new IconButton(
                icon: Icon(FontAwesomeIcons.facebookF),
                color: Colors.blue,
              ),
              new IconButton(
                icon: Icon(FontAwesomeIcons.google),
                color: Colors.blue,
              ),
            ],
          )),
        ],
      )),
    );
  }
}


Run Code Online (Sandbox Code Playgroud)

我删除了文本字段,以便代码适合。我希望你能帮助我,谢谢你的帮助!

小智 13

将 IconButton 的 padding 设置为 0,如下所示:

IconButton(
  padding: EdgeInsets.zero,
  ...
)
Run Code Online (Sandbox Code Playgroud)

  • 其实他的回答很准确。通过抑制 IconButton 的填充,图标将看起来位于父级区域的中心。 (2认同)

小智 8

列出的解决方案都不起作用。对我来说唯一的解决方案是将 IconButton 放在 SizedBox 中。

SizedBox(
    width: double.infinity,
    child: IconButton(
    icon: FaIcon(FontAwesomeIcons.moneyBillWave),
    iconSize: 80,    
    onPressed: () {},
   ),
  ),
Run Code Online (Sandbox Code Playgroud)