Flutter – Indicador de página suave

Smooth Page Indicator es un indicador de página animado personalizable con el siguiente conjunto de efectos incorporados.

  • Gusano
  • Puntos de expansión
  • Puntos de desplazamiento
  • Saltar puntos
  • Deslizar
  • Escala
  • Intercambio

Primeros pasos

Primero, debemos agregar la dependencia en el archivo pubspec.yaml .

dependencies:
 smooth_page_indicator: ^1.0.0+2

No te olvides de conseguir paquetes.

Nota : La versión de los paquetes puede cambiar en el momento de leer.

importarlo

Cuando lo usamos necesitamos Importar el paquete.

Dart

import 'package:smooth_page_indicator/smooth_page_indicator.dart';

Entrando en el código

Ahora, en la función void main( ) , llame al método runApp( ) y llame a la clase MysmoothIndicator ( ). Definición del controlador variable del tipo Controlador utilizado para controlar la página activa (saber qué página se selecciona después de cada deslizamiento)

Dart

var controller;
controller =PageController(
  viewPortFraction: 0.8,
 );

La viewportFraction determina que cada niño complete el eje principal, Aquí 80%. Ahora nuestra Clase se parece a Hasta ahora,

Dart

import 'package:flutter/material.dart';
import 'package:smooth_page_indicator/smooth_page_indicator.dart';
  
void main() {
  runApp(MysmoothIndicator());
}  // main function
  
class MysmoothIndicator extends StatefulWidget {
  @override
  _MysmoothIndicatorState createState() => new _MysmoothIndicatorState();
}
  
class _MysmoothIndicatorState extends State<MysmoothIndicator> {
  // variable controller
  var controller;  
 @override
  void initState() {
      controller=new PageController(
      viewportFraction:0.8,
    );
    super.initState();
}

Ahora haga una lista de páginas para deslizar. para que a cada golpe mostremos los efectos.

Dart

@override
 Widget build(BuildContext context) {
   // materialApp
   return new MaterialApp(  
     title: 'SPI Worm',
     // scaffold
     home: new Scaffold(  
       appBar:AppBar(
           title: new Text('SPI Worm')
       ),
       body:
       Container(
         width:double.infinity,
         height:400,
         child:
         Column(
           children: <Widget>[
             SizedBox(
               height:300,
               // pageview
               child:new PageView(  
                 controller:controller,
                 children: <Widget>[
                   SizedBox(
                   width:double.infinity,
                   height:300,
                   child:
                    Card(
                     color:Colors.yellow,
                     child:
                     Center(
                      child:
                       Text('Simple Text,Keep Swiping'),
                     ),
                   ),
                  ),
  
                   SizedBox(
                     width:double.infinity,
                     height:300,
                     child:
                     Card(
                       color:Colors.white70,
                       child:
                       Center(
                         child:
                          Icon(Icons.favorite),
                       ),
                     ),
                   ),
  
                   SizedBox(
                     width:double.infinity,
                     height:300,
                     child:
                     Card(
                       color:Colors.black26,
                       child:
                       Center(
                         child:
                          Column(
                            mainAxisAlignment:MainAxisAlignment.center,
                            crossAxisAlignment:CrossAxisAlignment.center,
                            children: <Widget>[
                              Image.asset("Images/Dart_Logo.png"),
                              Text("Dart Logo!")
                            ],
                          )
                       ),
                     ),
                   ),
                 ],
               ),
             ),
           ],
         )
       ),
     ),
   );
 }
}

Salida hasta ahora: 

Ahora tenemos que crear un indicador para diferentes efectos,

Efectos de gusano 

En el widget pageView, use el widget Flexible y use smoothPageIndicator como un elemento secundario, y tome wormEffect() como una propiedad secundaria del efecto .

Dart

Flexible(
         child:
           SmoothPageIndicator(
                controller:controller,
                count:3,
                effect:WormEffect(),
        ),
)

Producción:

Efectos de puntos de salto

En efecto , la propiedad de SmoothPageIndicator da JumpingDotEffect().

Dart

Container(
          child:
            SmoothPageIndicator(
                  controller:controller,
                  count:3,
                  effect:JumpingDotEffect(),                  
         ),
)

Producción:

ScrollPuntosEfectos

En efecto , la propiedad de SmoothPageIndicator da ScrollDotEffect() .

Dart

Container(
          child:
            SmoothPageIndicator(
                  controller:controller,
                  count:3,
                  effect:ScrollDotEffect(  activeStrokeWidth : 2.6,
                  activeDotScale : 0.4,
                  radius : 8,
                  spacing : 10,),                
         ),
)

Producción:

Efecto de escala

En efecto , la propiedad de SmoothPageIndicator da ScaleEffect() .

Dart

Container(
          child:
            SmoothPageIndicator(
                  controller:controller,
                  count:3,
                  effect:ScaleEffect(),                  
        ),
)

Producción:

Efecto deslizante 

En efecto , la propiedad de SmoothPageIndicator da SlideEffect().

Dart

Container(
         child:
            SmoothPageIndicator(
                  controller:controller,
                  count:3,
                  effect:SlideEffect(
                  spacing : 8,
                  radius : 4,
                  dotWidth : 24,
                  dotHeight : 16,
                  activeColor : Colors.indigo,
            ),
     ),
)

Producción:

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 *