No puedo entender cómo cambiar el botón de retroceso automático de la barra de aplicaciones a un color diferente. está debajo de un andamio y he intentado investigarlo, pero no puedo entenderlo.
return Scaffold(
appBar: AppBar(
backgroundColor: Colors.white,
title: Image.asset(
'images/.jpg',
fit: BoxFit.fill,
),
centerTitle: true,
),
ParentPage
y allí puede agregar la barra de aplicaciones una vez y en todos los lugares puede usar esto en lugar delScaffold
también puede anular la flecha hacia atrás predeterminada con un widget de su elección, a través de 'líder':
leading: new IconButton( icon: new Icon(Icons.arrow_back, color: Colors.orange), onPressed: () => Navigator.of(context).pop(), ),
todo lo que hace el widget AppBar es proporcionar un widget 'líder' predeterminado si no está configurado.
fuente
AppBar
también mostrará el botón Atrás cuandoModalRoute
se presione a.automaticallyImplyLeading: false
en AppBar.Navigator.of(context).pop();
tipo graciasParecía ser más fácil crear un nuevo botón y agregarle color, así es como lo hice para cualquiera que se preguntara
Widget build(BuildContext context) { return Scaffold( appBar: AppBar( leading: BackButton( color: Colors.black ),
fuente
AppBar( automaticallyImplyLeading: false, leading: Navigator.canPop(context) ? IconButton( icon: Icon( Icons.arrow_back, color: Colors.black, size: 47, ), onPressed: () => Navigator.of(context).pop(), ) : null, );
fuente
También puede establecer el color del icono principal globalmente para la aplicación
fuente
Puede personalizar el AppBarWidget , la palabra clave con es importante, o puede asignar su AppBarWidget personalizado a la propiedad appBar de Scaffold :
import 'package:flutter/material.dart'; double _getAppBarTitleWidth( double screenWidth, double leadingWidth, double tailWidth) { return (screenWidth - leadingWidth - tailWidth); } class AppBarWidget extends StatelessWidget with PreferredSizeWidget { AppBarWidget( {Key key, @required this.leadingChildren, @required this.tailChildren, @required this.title, this.leadingWidth: 110, this.tailWidth: 30}) : super(key: key); final List<Widget> leadingChildren; final List<Widget> tailChildren; final String title; final double leadingWidth; final double tailWidth; @override Widget build(BuildContext context) { // Get screen size double _screenWidth = MediaQuery.of(context).size.width; // Get title size double _titleWidth = _getAppBarTitleWidth(_screenWidth, leadingWidth, tailWidth); double _offsetToRight = leadingWidth - tailWidth; return AppBar( title: Row( children: [ Container( width: leadingWidth, child: Row( mainAxisAlignment: MainAxisAlignment.start, children: leadingChildren, ), ), Container( color: Colors.green, width: _titleWidth, padding: const EdgeInsets.only(left: 5.0, right: 5), child: Container( padding: EdgeInsets.only(right: _offsetToRight), color: Colors.deepPurpleAccent, child: Center( child: Text('$title'), ), ), ), Container( color: Colors.amber, width: tailWidth, child: Row( children: tailChildren, ), ) ], ), titleSpacing: 0.0, ); } @override Size get preferredSize => Size.fromHeight(kToolbarHeight); }
El siguiente es el ejemplo de cómo usarlo:
import 'package:flutter/material.dart'; import 'package:seal_note/ui/Detail/DetailWidget.dart'; import 'package:seal_note/ui/ItemListWidget.dart'; import 'Common/AppBarWidget.dart'; import 'Detail/DetailPage.dart'; class MasterDetailPage extends StatefulWidget { @override State<StatefulWidget> createState() => _MasterDetailPageState(); } class _MasterDetailPageState extends State<MasterDetailPage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBarWidget(leadingChildren: [ IconButton( icon: Icon( Icons.arrow_back_ios, color: Colors.white, ), ), Text( '文件夹', style: TextStyle(fontSize: 14.0), ), ], tailChildren: [ Icon(Icons.book), Icon(Icons.hd), ], title: '英语知识',leadingWidth: 140,tailWidth: 50,), body: Text('I am body'), ); } }
fuente
appBar: AppBar( iconTheme: IconThemeData( color: Colors.white, //modify arrow color from here.. ), );
fuente
Para cambiar el color principal de CupertinoPageScaffold
Theme( data: Theme.of(context).copyWith( cupertinoOverrideTheme: CupertinoThemeData( scaffoldBackgroundColor: Colors.white70, primaryColor: Styles.green21D877, // HERE COLOR OF LEADING ), ), child: CupertinoPageScaffold( navigationBar: CupertinoNavigationBar( brightness: Brightness.light, backgroundColor: Colors.white, middle: Text('Cupertino App Bar'), ), child: Container( child: Center( child: CupertinoActivityIndicator(), ), ), ), )
fuente