Cara memusatkan judul appbar


113

Saya mencoba untuk memusatkan teks judul di bilah aplikasi yang memiliki tindakan di depan dan di belakang.

@override
Widget build(BuildContext context) {
  final menuButton = new PopupMenuButton<int>(
    onSelected: (int i) {},
    itemBuilder: (BuildContext ctx) {},
    child: new Icon(
      Icons.dashboard,
    ),
  );

  return new Scaffold(
    appBar: new 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: new Text(widget.title, textAlign: TextAlign.center),
      leading: new IconButton(
          icon: new Icon(Icons.accessibility),
          onPressed: () {},
      ),
      actions: [
        menuButton,
      ],
    ),
    body: new Center(
      child: new Text(
        'Button tapped $_counter time${ _counter == 1 ? '' : 's' }.',
      ),
    ),
    floatingActionButton: new FloatingActionButton(
      onPressed: _incrementCounter,
      tooltip: 'Increment',
      child: new Icon(Icons.add),
    ), // This trailing comma makes auto-formatting nicer for build methods.
  );
}

Ini berfungsi dengan baik kecuali judulnya diratakan di sebelah kiri seperti yang ditunjukkan pada gambar ini:

JUDUL KE KIRI

Saat saya mencoba memasukkan judul di tengah, tampaknya terlalu banyak ke kiri:

@override
Widget build(BuildContext context) {
  final menuButton = new PopupMenuButton<int>(
    onSelected: (int i) {},
    itemBuilder: (BuildContext ctx) {},
    child: new Icon(
      Icons.dashboard,
    ),
  );

  return new Scaffold(
    appBar: new 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: new Center(child: new Text(widget.title, textAlign: TextAlign.center)),
      leading: new IconButton(
          icon: new Icon(Icons.accessibility),
          onPressed: () {},
      ),
      actions: [
        menuButton,
      ],
    ),
    body: new Center(
      child: new Text(
        'Button tapped $_counter time${ _counter == 1 ? '' : 's' }.',
      ),
    ),
    floatingActionButton: new FloatingActionButton(
      onPressed: _incrementCounter,
      tooltip: 'Increment',
      child: new Icon(Icons.add),
    ), // This trailing comma makes auto-formatting nicer for build methods.
  );
}

JUDUL TIDAK TERPUSAT DENGAN BAIK

Saya akan menyukai solusi untuk mendapatkan teks judul yang berpusat sempurna di antara 2 ikon.

Jawaban:


309

Memusatkan judul adalah default di iOS. Di Android, AppBarjudul defaultnya rata kiri, tetapi Anda bisa menggantinya dengan meneruskannya centerTitle: truesebagai argumen ke AppBarkonstruktor.

Contoh:

AppBar(
  centerTitle: true, // this is all you need
  ...
)

6
dalam hal ini judul tidak muncul persis di tengah: /

Ini bahkan tidak memengaruhi penyelarasan judul untuk saya.
Michael Tolsma

13

Saya memiliki masalah yang sama dan akhirnya berhasil ketika saya menambahkan
mainAxisSize: MainAxisSize.min ke widget Row saya. Saya harap ini membantu!

 return new Scaffold(
      appBar: new 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: Row(
          mainAxisAlignment: MainAxisAlignment.center,
          mainAxisSize: MainAxisSize.min,
          children: <Widget>[
            Text(
              widget.title,
            ),
          ],
        ),

        leading: new IconButton(
          icon: new Icon(Icons.accessibility),
          onPressed: () {},
        ),
        actions: [
          menuButton,
        ],
      ),
    );
  }

9

Dalam kasus saya, saya ingin memiliki logo / gambar di tengah daripada teks. Dalam hal ini, centerTitletidak cukup (tidak yakin mengapa, saya memiliki file svg, mungkin itu alasannya ...), jadi misalnya, ini:

appBar: AppBar(centerTitle: true, title: AppImages.logoSvg)

tidak akan benar-benar memusatkan gambar (ditambah gambar bisa menjadi terlalu besar, dll.). Yang bekerja dengan baik bagi saya adalah kode seperti ini:

appBar: AppBar(centerTitle: true,
    title: ConstrainedBox(
        constraints: BoxConstraints(maxHeight: 35, maxWidth: 200),
        child: AppImages.logoSvg)),

Jawaban yang diterima berfungsi untuk Teks tetapi ini adalah jawaban yang tepat untuk Widget khusus. Terima kasih!
sfratini

Bekerja untuk saya! Tampaknya centerTitle tidak berfungsi dengan baik saat ada tindakan di bilah alat. Yang ini memperbaikinya.
Moti Bartov

Tidak ada efek lain bagi saya selain solusi yang lebih sederhana. Dalam kasus saya, memiliki ruang batas transparan di sekitar gambar menyebabkan penempatan yang salah. Cukup memotong gambar sedikit lebih ketat membuat solusi sederhana berhasil.
rgisi

8

Inilah cara saya membuat centerTitle di appbar saya:

@override
Widget build(BuildContext context) {
return Scaffold(
  appBar: new AppBar(
    centerTitle: true ,
    title: new Text("Login"),
  ),
  body: new Container(
    padding: EdgeInsets.all(18.0),
      key: formkey,
        child: ListView(
        children: buildInputs() + buildSubmitButton(),
      ),
   ) 
);
}

2

Setelah mencoba banyak solusi, ini membantu saya centerTitle: true menambahkan kode sampel selain jawaban @Collin Jackson

Contoh dalambuild(BuildContext context)

melakukan hal ini

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: Text(widget.title),centerTitle: true
      ),

1
Sudah lama, ini menyelesaikan masalah. Sangat sederhana. Terima kasih.
Ravimaran

2

Berikut adalah pendekatan berbeda jika Anda ingin membuat judul bilah aplikasi khusus. Misalnya Anda menginginkan gambar dan teks di tengah bilah aplikasi, lalu tambahkan

appBar: AppBar(
          title: Row(
            mainAxisAlignment: MainAxisAlignment.center,
            children: [
              Icon(
                Icons.your_app_icon,
                color: Colors.green[500],
              ),
              Container(
                  padding: const EdgeInsets.all(8.0), child: Text('YourAppTitle'))
            ],

          ),
  )

Di sini kami telah membuat Rowdengan MainAxisAlignment.centeruntuk memusatkan anak-anak. Kemudian kami telah menambahkan dua anak - Ikon dan Containerdengan teks. Saya membungkus Textwidget di dalam Containeruntuk menambahkan padding yang diperlukan.


1
@override
Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(
            title: Text('Title'),
            actions: <Widget> [
               IconButton(icon: const Icon(Icons.file_upload), onPressed: _pressed),
            ],
            leading: IconButton(icon: const Icon(Icons.list), onPressed: _pressed),
            centerTitle: true,
        )
        body: Text("Content"),
    );
}

0

Ini dapat membantu dalam membuat Teks Judul Appbar di Tengah. Anda dapat memilih untuk menambahkan Gaya yang Anda inginkan menggunakan Gaya atau memberi komentar jika tidak diperlukan.

appBar: AppBar(
          title:  const Center(
            child: Text(
              "App Title",
              style: TextStyle( color: Colors.white,fontSize: 20),
            ),
          ),
        ),

Pada Tampilan Aplikasi:

masukkan deskripsi gambar di sini


0

Anda bisa memusatkan judul appBar dengan menggunakan parameter centerTitle .

centerTitle adalah Boolean Datatype, dan nilai defaultnya adalah False.

centerTitle : benar

Contoh:

import 'package:flutter/material.dart';

void main() {
  runApp(
    MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('App Title'),
          backgroundColor: Colors.red,
          centerTitle: true,
        ),
      ),
    ),
  );
}

masukkan deskripsi gambar di sini



-2

Gunakan Centerobjek

    appBar: AppBar(
      title: Center(
        child: const Text('Title Centered')
      )
    )

-3
appBar: AppBar(
    mainAxisAlignment: MainAxisAlignment.center,
)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.