Flutter: Dikey olarak ortalanmış sütun


96

Flutter'da bir sütun nasıl dikey olarak ortalanır? "Yeni Merkez" widget'ını kullandım. "Yeni Merkez" widget'ını kullandım, ancak sütunumu dikey olarak ortalamıyor mu? Herhangi bir fikir yardımcı olacaktır ....

@override
Widget build(BuildContext context) {
  return Scaffold(
    appBar: AppBar(
      title: Text("Thank you"),
    ),
    body: new Center(
      child: new Column(
        children: <Widget>[
          new Padding(
            padding: new EdgeInsets.all(25.0),
            child: new AnimatedBuilder(
              animation: animationController,
              child: new Container(
                height: 175.0,
                width: 175.0,
                child: new Image.asset('assets/angry_face.png'),
              ),
              builder: (BuildContext context, Widget _widget) {
                return new Transform.rotate(
                  angle: animationController.value * 6.3,
                  child: _widget,
                );
              },
            ),
          ),
          new Text('We are glad we could serve you...', style: new TextStyle(
              fontSize: 16.0,
              fontWeight: FontWeight.w600,
              color: Colors.black87),),
          new Padding(padding: new EdgeInsets.symmetric(vertical: 5.0, horizontal: 0.0)),
          new Text('We appreciate your feedback ! !', style: new TextStyle(
              fontSize: 13.0,
              fontWeight: FontWeight.w200,
              color: Colors.black87),),
        ],
      ),
    ),
  );
}

Yanıtlar:


164

Aziz'in önerdiği çözüm şu şekilde olacaktır:

Column(
  mainAxisAlignment: MainAxisAlignment.center,
  crossAxisAlignment: CrossAxisAlignment.center,
  children:children,
)

Dolgu nedeniyle tam merkezde olmazdı:

padding: new EdgeInsets.all(25.0),

Sütunu tam olarak ortalamak için - en azından bu durumda - dolguyu kaldırmanız gerekir.


45

Deneyin:

Column(
 mainAxisAlignment: MainAxisAlignment.center,
 crossAxisAlignment: CrossAxisAlignment.center,
 children:children...)

2
Bunu daha önce denedim. Ortalanıyor, ama ÖLÜ ortalamıyor mu?
Zeusox

3
Bu bir dolgu sorunuydu. Şimdi iyi çalışıyor, teşekkürler!
Zeusox

17

Sütun ile şunu kullanın:

mainAxisAlignment: MainAxisAlignment.center

Çocuklarını üst Boşluğunun ortasına dikey olarak hizalar


11

MainAxisAlignment ve crossAxisAlignment özelliklerini kullanarak bir satırın veya sütunun alt öğelerini nasıl hizalayacağını kontrol edersiniz. Bir sıra için, ana eksen yatay olarak ve çapraz eksen dikey olarak uzanır. Bir sütun için, ana eksen dikey olarak çalışır ve çapraz eksen yatay olarak çalışır.

 mainAxisAlignment: MainAxisAlignment.center,
 crossAxisAlignment: CrossAxisAlignment.center,

11

Bunu dene. Dikey ve yatay olarak ortalanır.

Center(
  child: Column(
    mainAxisAlignment: MainAxisAlignment.center,
    children: children,
  ),
)

5

Başka bir çözüm!

Widget'ları orta dikey biçimde ayarlamak isterseniz, bunun için ListView'ı kullanabilirsiniz. örneğin: Üç düğme kullandım ve bunları ListView'a ekledim ve ardından

shrinkWrap: true -> Bu ListView ile yalnızca gereken alanı kaplar.

import 'package:flutter/material.dart';

class List extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    final button1 =
        new RaisedButton(child: new Text("Button1"), onPressed: () {});
    final button2 =
        new RaisedButton(child: new Text("Button2"), onPressed: () {});
    final button3 =
        new RaisedButton(child: new Text("Button3"), onPressed: () {});
    final body = new Center(
      child: ListView(
        shrinkWrap: true,
        children: <Widget>[button1, button2, button3],
     ),
    );

    return new Scaffold(
        appBar: new AppBar(
          title: Text("Sample"),
        ),
        body: body);
  }
}    
void main() {
  runApp(new MaterialApp(
    home: List(),
  ));
}

Çıktı: görüntü açıklamasını buraya girin


4

Benim için sorun, çıkarmak zorunda olduğum sütunun içinde Genişletildi ve işe yaradı.

Column(
          mainAxisAlignment: MainAxisAlignment.center,
          crossAxisAlignment: CrossAxisAlignment.center,
          children: <Widget>[
            Expanded( // remove this
              flex: 2,
              child: Text("content here"),
            ),
          ],
        )

1

Kullanabilirsin. mainAxisAlignment:MainAxisAlignment.center Bu, malzemeyi sütundaki merkezden bilge olacaktır. `crossAxisAlignment: CrossAxisAlignment.center 'Bu, merkezdeki öğeleri satıra göre hizalar.

Container( alignment:Alignment.center, Child: Column () )

Basitçe kullanın. Center ( Child: Column () ) veya Padding widget'ıyla rap yapın. Ve Dolguyu, sütun çocukları ortada olacak şekilde ayarlayın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.