Barra de aplicaciones oculta en Flutter

La barra de aplicaciones oculta es la barra de aplicaciones, cuando estamos desplazando el cuerpo principal de la aplicación, la barra de aplicaciones también se desplaza y se oculta. No hay necesidad de agregar paquetes adicionales, simplemente usaremos el Widget NestedScrollView para lo mismo. A continuación se muestra un video de muestra para tener una idea de lo que vamos a hacer en este artículo.

Implementación paso a paso 

Después de crear un proyecto vacío, importe el paquete de materiales que se usará para crear widgets.

Dart

import 'package:flutter/material.dart';

En el método principal, llame a runApp. Y en runApp llame a la clase HiddenTopAppBar.

Dart

void main() => runApp(HiddenTopAppBar());

Ahora tenemos que crear un widget o clase con estado cuyo nombre sea MyApp. En la clase MyApp, devuelva MaterialApp y haga que el debugbanner sea falso. En la propiedad de inicio, llame al widget scaffold.

Dart

class HiddenTopAppBarState extends State<HiddenTopAppBar> {
 @override
 initState() {
   super.initState();
 }
  
 @override
 Widget build(BuildContext context) {
   return MaterialApp(
     debugShowCheckedModeBanner: false,
     home: Scaffold()

Ahora, en el cuerpo de Scaffold, use el widget NestedScrollView como se muestra en el siguiente código de ejemplo.

Dart

import 'package:flutter/material.dart';
  
// main function
void main() => runApp(HiddenTopAppBar());
  
class HiddenTopAppBar extends StatefulWidget {
  @override
  HiddenTopAppBarState createState() => new HiddenTopAppBarState();
}
  
class HiddenTopAppBarState extends State<HiddenTopAppBar> {
  
  @override
  initState() {
    super.initState();
  }
  
  @override
  Widget build(BuildContext context) {
    // MaterialApp 
    return MaterialApp(  
      debugShowCheckedModeBanner:false,
      // scaffold 
      home:Scaffold(  
      body: NestedScrollView(
        headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
          return [
            SliverAppBar(
              leading:Icon(Icons.wallpaper),
              title: Container(
                color:Colors.blue, 
                child:Text("Hidden AppBar")
              ),
              elevation: 10.0,
              automaticallyImplyLeading: false,
              expandedHeight:50,
              floating: true,
              snap: true,
            )
          ];
        },
        // list of images for scrolling
        body:  ListView(
          children: <Widget>[
            Text("Scroll Down To Hide The AppBar!"),
            Divider(),
            Image.asset("Images/S1.jpg"),
            Divider(),
            Image.asset("Images/S2.jpg"),       
            Divider(),
            Image.asset("Images/S3.jpg"),           
          ],
        ),
      ),
    ),
    );
  }
}

Producción:

Explicación 

  • Main es el método principal utilizado para ejecutar HiddenTopAppBar .
  • Creación de HiddenTopAppBar StatefulWidget debido a la detección del estado de desplazamiento.
  • Creando la clase de estado HiddenTopAppBarState que extiende su estado principal desde la clase principal HiddenTopAppBar.
  • Método initState utilizado para inicializar el estado de la página una vez cargada.
  • Como Flutter se basa en widgets, se necesitaba crear un widget
  • Aplicación de devolución de material que permite configurar el título y el conjunto de temas en Light de forma predeterminada y Scaffold -Scaffold nos permite configurar el cuerpo de la página.
  • Como necesitamos ocultar AppBar, necesitamos usar NestedScrollView Tomando headerSliverBuilder que detecta el desplazamiento y devolviendo SliverAppBar.
  • Ahora SliverAppBar se ocultará automáticamente cuando los usuarios se desplacen hacia abajo y reaparecerán cuando el usuario se desplace hacia arriba.
  • SliverAppBar Tomando la altura, el título y el encabezado que muestran un ícono.
  • NestedScrollView Toma como cuerpo un ListView tomando 3 imágenes separadas por divisor.

Publicación traducida automáticamente

Artículo escrito por ms471841 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *