Как горизонтально отцентрировать текст в флаттере? - PullRequest
2 голосов
/ 14 марта 2019

Я новичок во Флаттере и пытаюсь центрировать текст по горизонтали.Пожалуйста, проверьте код ниже.

import 'package:flutter/material.dart';

class LoginPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Container(
        color: Colors.black,
        child: Row(
          children: <Widget>[
            Column(
              children: <Widget>[_buildTitle()],
            ),
          ],
        ));
  }

  Widget _buildTitle() {
    return 
    Center(child: Container(
      margin: EdgeInsets.only(top: 100),
      child: Column(

        children: <Widget>[
          Text(
            "something.xyz",
            style: TextStyle(color: Colors.white, fontWeight: FontWeight.bold, fontSize: 25,),
            textAlign: TextAlign.center,
          ),
        ],
      ),
    ),);

  }
}

Это не по центру по горизонтали, вместо этого дал следующий вывод.Поля и т. Д. В порядке.

enter image description here

Как это исправить?

Ответы [ 4 ]

4 голосов
/ 14 марта 2019

попробуйте

import 'package:flutter/material.dart';

void main() => runApp(MaterialApp(home: LoginPage()));

class LoginPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
      body: Container(
          color: Colors.black,
          child: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[_buildTitle()],
              ),
            ],
          )),
    );
  }

  Widget _buildTitle() {
    return Center(
      child: Container(
        margin: EdgeInsets.only(top: 100),
        child: Column(
          children: <Widget>[
            Text(
              "something.xyz",
              style: TextStyle(
                color: Colors.white,
                fontWeight: FontWeight.bold,
                fontSize: 25,
              ),
              // textAlign: TextAlign.center,
            ),
          ],
        ),
      ),
    );
  }
}
3 голосов
/ 20 апреля 2019

Я добавил свой собственный виджет для этого варианта использования, который намного короче, чем решение для строк:

import 'package:flutter/material.dart';

class CenterHorizontal extends StatelessWidget {   

    CenterHorizontal(this.child);   
    final Widget child;

    @override   
   Widget build(BuildContext context) => 
        Row(mainAxisAlignment: MainAxisAlignment.center,children: [child]); 
}

результат таков:

CenterHorizontal(Text('this is horizontal centered'))
0 голосов
/ 30 мая 2019

более простой способ:

child: Center(
               child: Row(
                 mainAxisAlignment: MainAxisAlignment.center,
                 children: <Widget>[
                   Text('Sunday', style: TextStyle(fontSize: 20),),
                 ],
               ),
             ), //Center
0 голосов
/ 14 марта 2019

Если я понимаю, вы просто хотите центрировать заголовок горизонтально, а не другие элементы, которые могут появиться после того, как я предполагаю.

Посмотрите на код ниже:

import 'package:flutter/material.dart';

class LoginPage extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    return Scaffold(
        appBar: AppBar(
          backgroundColor: Colors.blueAccent,
          title: Text("DEMO"),
        ),
        body: Container(
            color: Colors.black,
            child: Column(
              children: <Widget>[
                Row(
                  mainAxisAlignment: MainAxisAlignment.center,
                  children: <Widget>[_buildTitle()],
                ),
                Row(
                  children: <Widget>[
                    // add other elements that you don't to center horizontally
                    Text(
                      "other elements here",
                      style: TextStyle(
                        color: Colors.white,
                        fontWeight: FontWeight.bold,
                        fontSize: 25,
                      ),
                    ),
                  ],
                ),
              ],
            )));
  }

  Widget _buildTitle() {
    return Container(
      margin: EdgeInsets.only(top: 100),
      child: Text(
        "something.xyz",
        style: TextStyle(
          color: Colors.white,
          fontWeight: FontWeight.bold,
          fontSize: 25,
        ),
      ),
    );
  }
}

Результат, который дает: здесь

...