Flutter – Biblioteca de confeti

Quiere agregar confeti en la pantalla en Flutter. Supongamos que si un usuario ganó un juego o alguna recompensa, debería haber una explosión de confeti en la pantalla. Antes no era una tarea fácil, pero ahora lo es con la biblioteca Flutter: confetti. En este artículo, veremos cómo implementar confeti en Flutter, luego se puede personalizar según los requisitos.

Implementación:

Siga los pasos a continuación para implementar Confetti en Flutter:

Paso 1: agregue la dependencia en pubspec.yaml ejecutando el siguiente comando en la terminal IDE,

Dart

flutter pub add confetti

Paso 2: importa la dependencia de confeti a main.dart.

Dart

import 'package:confetti/confetti.dart';

Paso 3:   En CofettiWidget(), debemos agregar confettiController , blastDirection , emitFrequency , gravity, numberOfPartices, etc. Podemos agregar parámetros y modificarlos según nuestros requisitos. También agregamos fuerza de explosión máxima y mínima con partículas que deberían emerger.

Dart

ConfettiWidget(
                  confettiController: _centerController,
                  blastDirection: pi / 2,
                  maxBlastForce: 5,
                  minBlastForce: 1,
                  emissionFrequency: 0.03,
                  numberOfParticles: 10,
                  shouldLoop:true,
                  gravity: 0,
 ),

Código fuente del confeti central:

Necesitamos inicializar cofettiController en initState() y, después de su uso, debemos desecharlo en el método dispose() . Cuando hagamos clic en Center TextButton, invocará _centerController que iniciará la animación en la pantalla. Si queremos una animación continua en la pantalla, debemos establecer shouldLoop en verdadero.

Dart

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:confetti/confetti.dart';
  
void main() {
  runApp(MyApp());
}
  
class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}
  
class _MyAppState extends State<MyApp> {
    
  // declare confettiController;
  late ConfettiController _centerController;
  
  @override
  void initState() {
    super.initState();
      
    // initialize confettiController
    _centerController =
        ConfettiController(duration: const Duration(seconds: 10));
  }
  
  @override
  void dispose() {
      
    // dispose the controller
    _centerController.dispose();
    super.dispose();
  }
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: Text("GeeksForGeeks"),
          backgroundColor: Colors.green,
          centerTitle: true,
        ),
        backgroundColor: Colors.black,
        body: SafeArea(
          child: Stack(
            children: <Widget>[
                
              // align the confetti on the screen
              Align(
                alignment: Alignment.center,
                child: ConfettiWidget(
                  confettiController: _centerController,
                  blastDirection: pi / 2,
                  maxBlastForce: 5,
                  minBlastForce: 1,
                  emissionFrequency: 0.03,
                    
                  // 10 paticles will pop-up at a time
                  numberOfParticles: 10, 
                    
                  // particles will pop-up up
                  gravity: 0, 
                ),
              ),
              Align(
                alignment: Alignment.topCenter,
                child: TextButton(
                    onPressed: () {
                        
                      // invoking confettiController to come into play
                      _centerController.play();
                    },
                    child: Text('Center',
                        style: const TextStyle(
                            color: Colors.white, fontSize: 20))),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Producción:

También podemos agregar formas personalizadas como estrellas, círculos, etc. junto con diferentes colores en ConfettiWidget. La creatividad no se limita, juega con el Confetti y dale vida a las aplicaciones.

Confeti de Top-Center:

Dart

import 'dart:math';
import 'package:flutter/material.dart';
import 'package:confetti/confetti.dart';
  
void main() {
  runApp(MyApp());
}
  
class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}
  
class _MyAppState extends State<MyApp> {
    
  // declare confettiController;
  late ConfettiController _topController;
  
  @override
  void initState() {
    super.initState();
      
     // initialize confettiController
    _topController = ConfettiController(duration: const Duration(seconds: 10));
  }
  
  @override
  void dispose() {
      
    // dispose the controller
    _topController.dispose();
    super.dispose();
  }
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: Scaffold(
        appBar: AppBar(
          title: Text("GeeksForGeeks"),
          backgroundColor: Colors.green,
          centerTitle: true,
        ),
        backgroundColor: Colors.black,
        body: SafeArea(
          child: Stack(
            children: <Widget>[
                
              // align the confetti on the screen
              Align(
                alignment:
                  
                    // confetti will pop from top-center
                    Alignment.topCenter, 
                child: ConfettiWidget(
                  confettiController: _topController,
                  blastDirection: pi / 2,
                  maxBlastForce: 5,
                  minBlastForce: 1,
                  emissionFrequency: 0.01,
                    
                  // 10 paticles will pop-up at a time
                  numberOfParticles: 20,
                    
                  // particles will come down
                  gravity: 1, 
                    
                  // start again as soon as the
                  // animation is finished
                  shouldLoop:
                      true, 
                    
                  // assign colors of any choice
                  colors: const [
                    Colors.green,
                    Colors.yellow,
                    Colors.pink,
                    Colors.orange,
                    Colors.blue
                  ], 
                ),
              ),
              Center(
                child: TextButton(
                    onPressed: () {
                        
                      // invoking confettiController 
                      // to come into play
                      _topController.play();
                    },
                    child: Text('Top',
                        style: const TextStyle(
                            color: Colors.white, fontSize: 20))),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

Producción:

Publicación traducida automáticamente

Artículo escrito por rn540 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 *