【问题标题】:How to Center a Column in flutter?如何在颤动中使列居中?
【发布时间】:2020-12-19 06:49:50
【问题描述】:

我对 Flutter 很陌生,我正在尝试实现一个带有 3 个按钮的 UI。在那里,我想将这些按钮垂直和水平居中。但我做不到

我在here 中尝试了给定的示例,也尝试使用Center 标签,但对我都没有用。我想我在错误的地方添加了这些行,但我不知道是不是问题

下面是我的实现:-

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_widget_from_html/flutter_widget_from_html.dart';
import 'package:pan_asia_bank_app/screens/ChangePassword.dart';
import 'package:pan_asia_bank_app/widgets/NavDrawer.dart';

class ManageAccount extends StatelessWidget{

  Widget _buttons(name, BuildContext context){
    return Center(
        child: ButtonBar(
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            ButtonTheme(
              minWidth: 200,
                child:RaisedButton(
                  child: new Text(name),
                  shape: RoundedRectangleBorder(
                      borderRadius: BorderRadius.circular(100),
                      side: BorderSide(color: Colors.red)
                  ),
                  color: Colors.red,
                  textColor: Colors.white,
                  onPressed: (){
                    if(name == 'Change Password'){
                      Navigator.push(context, MaterialPageRoute(builder: (context) => ChangePassword()));
                    }
                  },
                )
            ),
          ],
        )
    );
  }

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
        drawer: NavDrawer(),
        appBar: AppBar(
          // Here we take the value from the MyHomePage object that was created by
          // the App.build method, and use it to set our appbar title.
          title: Image.asset("assets/logo.png", fit: BoxFit.cover),
        ),
        body: Container(
            margin: const EdgeInsets.only(top: 10),
            padding: EdgeInsets.symmetric(horizontal: 20),
            child: SingleChildScrollView(
                child: Center(
                  child: Column(
                    children: [
                      Container(
                        alignment: Alignment.topLeft,
                        margin: const EdgeInsets.only(left: 15, top: 20, bottom: 20),
                        child: HtmlWidget("""<h2 style='color:red;'>Manage Account</h2>"""),
                      ),
                      Container(
//                        margin: const EdgeInsets.only(left: 25, top: 200, right: 25),
                        alignment: Alignment.center,
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            _buttons('Change Username', context)
                          ],
                        ),
                      ),
                      Container(
//                        margin: const EdgeInsets.only(left: 110, top: 25, right: 25),
                        alignment: Alignment.centerLeft,
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            _buttons('Change Password', context)
                          ],
                        ),
                      ),
                      Container(
//                        margin: const EdgeInsets.only(left: 110, top: 25, right: 25),
                        alignment: Alignment.centerLeft,
                        child: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            _buttons('Change Contact No', context)
                          ],
                        ),
                      ),
                    ],
                  ),

                ),
            ),
        )
    );
//    Container(
//      child: Align(
//        alignment: Alignment.center,
//          _buttons()
//      ),
//    );
  }

}

为了获得预期的 UI,需要进行哪些更改?非常感谢您的帮助!

【问题讨论】:

    标签: flutter


    【解决方案1】:

    Row 小部件包裹您的Column 并在行中写入:

    mainAxisAlignment: MainAxisAlignment.center
    

    请参阅下面的示例了解更多想法:

    Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: <Widget>[
                Column(
                  children: <Widget>[
    

    【讨论】:

    • 你好。我还有一个问题。一旦我使用它,它只以 Y 轴为中心。现在我也想以 X 轴为中心。我使用了crossAxisAlignment: CrossAxisAlignment.center,但没有奏效。我该怎么办? @A R
    • @MarketMAD 你到底想做什么?
    猜你喜欢
    • 2020-04-16
    • 2019-08-05
    • 2021-10-04
    • 2019-08-05
    • 2022-08-18
    • 2020-09-23
    • 2021-07-16
    • 1970-01-01
    • 2021-11-25
    相关资源
    最近更新 更多