🚀 Uso de AppBar en Flutter.
Tabla de Contenido
Introducción
El widget de AppBar es un widget que gestiona toda la parte superior de la pantalla del dispositivo, también conocido como Top.
Widget AppBar
El AppBar es un widget que nos permite tener acciones rápidas en la parte superior izquierda, como búsquedas, notificaciones y cualquier otro tipo de acción que nos permita actuar sobre el screen actual.
Propiedades
A continuación, nombraremos las propiedades del widget más utilizadas:

leadingpropiedad de tipo Widget, que se muestra en la parte superior izquierda en la barra de herramientas, antes del títulotitle. Por lo general, se utiliza el widget IconButton.titlepropiedad de tipo Widget, es el widget primario de la barra de herramientas y va en la parte media de la misma. Se utiliza el widgetText.actionspropiedad de tipoList<Widget>, es una lista de widgets que van en la parte superior derecha de la barra de herramientas, después del título. Por lo general son IconButton los que se utilizan allí.flexibleSpaceeste widget está detrás de la barra de herramientas (AppBar) y de la barra de pestañas o tabs (TabBar) y ocupa el mismo tamaño de ambas.bottompropiedad de tipo Widget, se usa especialmente para el widget TabBar, que tiene una lista de children tipo Tab.
Acá se encuentran el resto de propiedades que tenemos a disposición con este widget, para más detalle podemos buscar la documentación oficial .
actionsIconThemepropiedad para modificar las propiedades o estilo deactions.actionsPaddingpropiedad para modificar el padding deactions.backgroundColorpropiedad para modificar el color de fondo.bottomOpacitypropiedad para cambiar la opacidad debottom.centerTitlepropiedad centrar el títulotitleen la barra de herramientas.elevationpropiedad para mostrar la elevación del app bar respecto a los demás widgets.foregroundColorpropiedad para definir el color de fondo.iconThemepropiedad para definir el estilo de los íconos del app bar.leadingWidthpropiedad para definir el ancho delleading.shadowColores el color de la sombra que queda debajo del app bar.shapees la forma que se le quiere dar al app bar.titleSpacingpropiedad para modificar el espacio horizontal del títulotitle.titleTextStylees el estilo del texto que se coloca en eltitle.
Hay otras propiedades, pero estas son las más utilizadas para el widget de AppBar.
Ejemplo de AppBar
// Se crea screen para widget app-bar
import 'package:flutter/material.dart';
class AppBarScreen extends StatefulWidget {
const AppBarScreen({super.key});
@override
State<AppBarScreen> createState() => _AppBarScreenState();
}
class _AppBarScreenState extends State<AppBarScreen> {
bool _appBarOption = true;
@override
Widget build(BuildContext context) {
return Scaffold(
body: _appBarOption ? AppBarWidget(context) : TabBarWidget(context),
floatingActionButton: FloatingActionButton(
onPressed: () {
setState(() {
_appBarOption = !_appBarOption;
});
},
child: const Icon(Icons.change_circle_outlined),
),
);
}
}
class AppBarWidget extends StatefulWidget {
const AppBarWidget(BuildContext context, {super.key});
@override
State<AppBarWidget> createState() => _AppBarWidgetState();
}
class _AppBarWidgetState extends State<AppBarWidget> {
bool _showPlayIcon = true;
bool _showNotificationIcon = false;
String _data = '';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text('AppBar Screen'),
actions: [
_showPlayIcon
? buildPlayPauseButton(
text: 'Play selected',
icon: Icons.play_arrow,
)
: buildPlayPauseButton(
text: 'Pause selected',
icon: Icons.pause,
),
_showNotificationIcon
? buildNotificationButton(
text: 'Disabled notifications',
icon: Icons.notifications,
)
: buildNotificationButton(
text: 'Enabled notifications',
icon: Icons.notifications_outlined,
),
PopupMenuButton<String>(
onSelected: (value) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(content: Text('Tap: $value')),
);
},
itemBuilder: (BuildContext context) {
return {'Profile', 'Settings', 'Logout'}.map((String choice) {
return PopupMenuItem<String>(
value: choice,
child: Text(choice),
);
}).toList();
},
),
],
elevation: 5,
shadowColor: Theme.of(context).shadowColor,
),
body: Center(
child: Text(_data),
),
);
}
IconButtonWidget buildNotificationButton(
{required String text, required IconData icon}) {
return IconButtonWidget(
icon: icon,
text: text,
onPressed: () {
setState(() {
_showNotificationIcon = !_showNotificationIcon;
_data = text;
});
},
);
}
IconButtonWidget buildPlayPauseButton(
{required String text, required IconData icon}) {
return IconButtonWidget(
icon: icon,
text: text,
onPressed: () {
setState(() {
_showPlayIcon = !_showPlayIcon;
_data = text;
});
},
);
}
}
class IconButtonWidget extends StatelessWidget {
const IconButtonWidget(
{super.key,
required this.icon,
required this.text,
required this.onPressed});
final IconData icon;
final String text;
final void Function() onPressed;
@override
Widget build(BuildContext context) {
return IconButton(
icon: Icon(icon),
tooltip: text,
onPressed: onPressed,
);
}
}
class TabBarWidget extends StatelessWidget {
const TabBarWidget(BuildContext context, {super.key});
@override
Widget build(BuildContext context) {
return DefaultTabController(
initialIndex: 0,
length: 3,
child: Scaffold(
appBar: AppBar(
title: const Text('TabBar Screen'),
bottom: const TabBar(
tabs: [
Tab(
icon: Icon(Icons.home_outlined),
text: 'News',
),
Tab(
icon: Icon(Icons.bar_chart_outlined),
text: 'Charts',
),
Tab(
icon: Icon(Icons.account_circle_outlined),
text: 'Accounts',
),
],
),
),
body: const TabBarView(children: [
Center(
child: Text('Home selected'),
),
Center(
child: Text('Charts selected'),
),
Center(
child: Text('Account selected'),
),
]),
),
);
}
}

Conclusión
En conclusión, el widget AppBar nos da diferentes opciones para modificar la barra de herramientas o la parte superior de la pantalla y personalizarla de acuerdo a lo que necesitamos en nuestra app.
¡Gracias por leer!
https://buymeacoffee.com/jaimetellezb
