Próbuję wyśrodkować tekst tytułu na pasku aplikacji, który ma zarówno początkową, jak i końcową akcję.
@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.
);
}
Działa to dobrze, z wyjątkiem tego, że tytuł jest wyrównany do lewej, jak pokazano na tym obrazku:
Kiedy staram się umieścić tytuł pośrodku, okazuje się, że jest za bardzo w lewo:
@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.
);
}
Bardzo chciałbym znaleźć rozwiązanie, dzięki któremu tekst tytułu będzie idealnie wyśrodkowany między 2 ikonami.
Miałem ten sam problem i w końcu zadziałał, kiedy dodałem
mainAxisSize: MainAxisSize.min do mojego widżetu Row. Mam nadzieję, że to pomoże!
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, ], ), ); }
źródło
W moim przypadku chciałem wyśrodkować logo / obraz zamiast tekstu. W tym przypadku
centerTitle
to za mało (nie wiem czemu, mam plik svg, może to jest powód ...), więc na przykład tak:appBar: AppBar(centerTitle: true, title: AppImages.logoSvg)
nie wyśrodkowuje obrazu (dodatkowo obraz może być zbyt duży itp.). To, co działa dobrze, to taki kod:
appBar: AppBar(centerTitle: true, title: ConstrainedBox( constraints: BoxConstraints(maxHeight: 35, maxWidth: 200), child: AppImages.logoSvg)),
źródło
Oto jak tworzę centerTitle na pasku aplikacji:
@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(), ), ) ); }
źródło
Po wypróbowaniu wielu rozwiązań pomogło mi to
centerTitle: true
dodać przykładowy kod oprócz odpowiedzi @Collin JacksonPrzykład w
build(BuildContext context)
Zrób to
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 ),
źródło
Oto inne podejście, jeśli chcesz utworzyć niestandardowy tytuł paska aplikacji. Na przykład chcesz, aby obraz i tekst znajdowały się na środku paska aplikacji, a następnie dodaj
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')) ], ), )
Tutaj stworzyliśmy
Row
z,MainAxisAlignment.center
aby wyśrodkować dzieci. Następnie dodaliśmy dwoje dzieci - ikonę iContainer
z tekstem. ZawinąłemText
widżet w,Container
aby dodać niezbędne wypełnienie.źródło
@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"), ); }
źródło
Może to pomóc w tworzeniu tekstu tytułu paska aplikacji w środku. Możesz dodać żądane style za pomocą stylu lub skomentować je, jeśli nie są potrzebne.
appBar: AppBar( title: const Center( child: Text( "App Title", style: TextStyle( color: Colors.white,fontSize: 20), ), ), ),
Na wyświetlaczu aplikacji:
źródło
Możesz wyśrodkować tytuł appBar za pomocą centerTitle parametru .
centerTitle to Boolean Datatype, a wartość domyślna to False.
centerTitle : true
Przykład:
import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( appBar: AppBar( title: Text('App Title'), backgroundColor: Colors.red, centerTitle: true, ), ), ), ); }
źródło
appbar: AppBar (centerTitle: true, title: Text ("HELLO"))
źródło
Użyj
Center
obiektuappBar: AppBar( title: Center( child: const Text('Title Centered') ) )
źródło
źródło