Я пытаюсь центрировать текст заголовка на панели приложения, которая имеет как ведущие, так и конечные действия.
@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.
);
}
Это работает хорошо, за исключением того, что заголовок выровнен по левому краю, как показано на этом рисунке:
Когда я пытаюсь включить заголовок в центр, мне кажется, что он слишком левый:
@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.
);
}
Мне бы хотелось, чтобы текст заголовка был идеально центрирован между двумя значками.
У меня была та же проблема, и она наконец сработала, когда я добавил
mainAxisSize: MainAxisSize.min в свой виджет Row. Надеюсь, это поможет!
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, ], ), ); }
источник
В моем случае я хотел иметь логотип / изображение по центру вместо текста. В этом случае
centerTitle
этого недостаточно (не знаю, почему, у меня есть файл svg, возможно, это причина ...), поэтому, например, это:appBar: AppBar(centerTitle: true, title: AppImages.logoSvg)
не будет на самом деле центрировать изображение (плюс изображение может быть слишком большим и т. д.). Что мне нравится, так это такой код:
appBar: AppBar(centerTitle: true, title: ConstrainedBox( constraints: BoxConstraints(maxHeight: 35, maxWidth: 200), child: AppImages.logoSvg)),
источник
Вот как я делаю centerTitle на панели приложений:
@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(), ), ) ); }
источник
Попробовав множество решений, это помогло мне
centerTitle: true
добавить образец кода в дополнение к @Collin Jackson ответпример в
build(BuildContext context)
сделай это
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 ),
источник
Вот другой подход, если вы хотите создать собственный заголовок панели приложения. Например, вам нужно изображение и текст в центре панели приложения, затем добавьте
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')) ], ), )
Здесь мы создали
Row
сMainAxisAlignment.center
до центра детей. Затем мы добавили двух дочерних элементов - значок и объектContainer
с текстом. Я обернулText
виджет в,Container
чтобы добавить необходимые отступы.источник
@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"), ); }
источник
Это может помочь сделать текст заголовка панели приложений в центре. Вы можете добавить желаемые стили с помощью стиля или прокомментировать его, если в этом нет необходимости.
appBar: AppBar( title: const Center( child: Text( "App Title", style: TextStyle( color: Colors.white,fontSize: 20), ), ), ),
На дисплее приложения:
источник
Вы можете центрировать заголовок панели приложений с помощью centerTitle параметра .
centerTitle - это логический тип данных, а значение по умолчанию - False.
centerTitle : true
Пример :
import 'package:flutter/material.dart'; void main() { runApp( MaterialApp( home: Scaffold( appBar: AppBar( title: Text('App Title'), backgroundColor: Colors.red, centerTitle: true, ), ), ), ); }
источник
панель приложений: AppBar (centerTitle: true, title: Text ("HELLO"))
источник
Использовать
Center
объектappBar: AppBar( title: Center( child: const Text('Title Centered') ) )
источник
источник