Bagaimana cara menyetel ketinggian AppBar
in Flutter?
Judul bilah harus tetap berada di tengah secara vertikal (di situ AppBar
).
dart
material-design
flutter
Buğra Ekuklu
sumber
sumber
AppBar
, bukan 'mengatur' itu.Jawaban:
Anda dapat menggunakan PreferredSize :
class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( title: 'Example', home: Scaffold( appBar: PreferredSize( preferredSize: Size.fromHeight(50.0), // here the desired height child: AppBar( // ... ) ), body: // ... ) ); } }
sumber
centerTitle
properti untuk memusatkannya.AppBar
Anda dapat menggunakan
PreferredSize
danflexibleSpace
untuk itu:appBar: PreferredSize( preferredSize: Size.fromHeight(100.0), child: AppBar( automaticallyImplyLeading: false, // hides leading widget flexibleSpace: SomeWidget(), ) ),
Dengan cara ini Anda dapat menjaga
elevation
dariAppBar
untuk menjaga bayangannya terlihat dan memiliki tinggi adat, yang adalah apa yang saya hanya mencari. Anda memang harus mengatur jaraknyaSomeWidget
.sumber
Pada saat menulis ini, saya tidak menyadarinya
PreferredSize
. Jawaban Cinn lebih baik untuk mencapai ini.Anda dapat membuat widget khusus Anda sendiri dengan ketinggian khusus:
import "package:flutter/material.dart"; class Page extends StatelessWidget { @override Widget build(BuildContext context) { return new Column(children : <Widget>[new CustomAppBar("Custom App Bar"), new Container()],); } } class CustomAppBar extends StatelessWidget { final String title; final double barHeight = 50.0; // change this for different heights CustomAppBar(this.title); @override Widget build(BuildContext context) { final double statusbarHeight = MediaQuery .of(context) .padding .top; return new Container( padding: new EdgeInsets.only(top: statusbarHeight), height: statusbarHeight + barHeight, child: new Center( child: new Text( title, style: new TextStyle(fontSize: 20.0, fontWeight: FontWeight.bold), ), ), ); } }
sumber
Selain jawaban @ Cinn, Anda dapat menentukan kelas seperti ini
class MyAppBar extends AppBar with PreferredSizeWidget { @override get preferredSize => Size.fromHeight(50); MyAppBar({Key key, Widget title}) : super( key: key, title: title, // maybe other AppBar properties ); }
atau lewat sini
class MyAppBar extends PreferredSize { MyAppBar({Key key, Widget title}) : super( key: key, preferredSize: Size.fromHeight(50), child: AppBar( title: title, // maybe other AppBar properties ), ); }
dan kemudian gunakan sebagai pengganti standar
sumber
Jawaban Cinn bagus, tapi ada satu hal yang salah.
The
PreferredSize
widget akan segera dimulai di bagian atas layar, tanpa akuntansi untuk status bar, sehingga beberapa dari puncaknya akan dibayangi oleh tingginya status bar. Ini juga menjelaskan takik samping.Solusinya : Bungkus
preferredSize
anak dengan aSafeArea
appBar: PreferredSize( //Here is the preferred height. preferredSize: Size.fromHeight(50.0), child: SafeArea( child: AppBar( flexibleSpace: ... ), ), ),
Jika Anda tidak ingin menggunakan properti flexibleSpace, maka tidak diperlukan semua itu, karena properti lain dari
AppBar
akan memperhitungkan bilah status secara otomatis.sumber
SafeArea
apakah untuk mengurangi tinggi bilah status, namun Anda menambahkannya lagi denganMediaQuery.of(context).padding.top
? Saya pikir SafeArea tidak diperlukan di sini.SafeArea
penting agar bilah aplikasi tidak tumpang tindih dengan bilah status, tetapiMediaQuery.of(context).padding.top
sebenarnya tidak diperlukan. Saya sudah mengedit jawabannya, terima kasih.Anda dapat menggunakan properti toolbarHeight dari Appbar, ia melakukan apa yang Anda inginkan.
sumber
Penggunaan
toolbarHeight
:Tidak perlu lagi menggunakan
PreferredSize
. GunakantoolbarHeight
denganflexibleSpace
.AppBar( toolbarHeight: 120, // Set this height flexibleSpace: Container( color: Colors.orange, child: Column( children: [ Text('1'), Text('2'), Text('3'), Text('4'), ], ), ), )
sumber
Jika Anda berada dalam Kode Visual, Ctrl + Klik pada fungsi AppBar.
Dan edit bagian ini.
app_bar.dart will open and you can find preferredSize = new Size.fromHeight(kToolbarHeight + (bottom?.preferredSize?.height ?? 0.0)),
Perbedaan ketinggian!
sumber