Flutter: pantalla de incorporación

La pantalla de incorporación es una de las más populares que puede ver en la mayoría de las aplicaciones después de cargar la pantalla de bienvenida. La pantalla de incorporación ofrece una breve descripción general de una aplicación. Principalmente, la pantalla de incorporación consta de tres o cuatro diseños que se deslizan cuando hacemos clic en Siguiente. En este artículo, veremos cómo implementar una pantalla de incorporación en la aplicación Flutter.

Primero, agregue la imagen que usará en la sección de activos del archivo pubspec.yaml.

Dart

assets:
  - images/slider1.jpg
  - images/slider2.png
  - images/slider3.jpeg

 
Ahora, sigue los pasos para implementar On Boarding Screen en nuestra app Flutter: 

Paso 1: navegue hasta el archivo main.dart() y devuelva Material App()

Primero hemos declarado MyApp() en runApp en la función principal. Luego hemos creado StatefulWidget para MyApp en el que hemos devuelto MaterialApp(). En este MaterialApp() le hemos dado el título a nuestra aplicación y luego declarado el tema de nuestra aplicación como marrón. Luego le hemos dado nuestra primera pantalla o aplicación deslizante en casa: HomePage().

Dart

class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}
 
class _HomeScreenState extends State<HomeScreen> {
 
  
  @override
  Widget build(BuildContext context) {
    return Scaffold();

Paso 2: Crear PageView en este Scaffold()

Le hemos dado a Column en el cuerpo de nuestro Scaffold(). En esta columna, hemos proporcionado elementos secundarios que consisten en el generador PageView que está envuelto por el widget Expandido . PageView se usa para hacer que nuestra pantalla se pueda desplazar horizontalmente, lo que depende de la cantidad de elementos que se le agreguen. En esta vista de página, hemos dado la dirección de desplazamiento como horizontal, elemento Contar, lo que significa que no hay páginas. En eso hemos declarado valor para onPageChanged() . En los que hemos aportado valor. Después de eso, hemos devuelto el control deslizante que consta de imagen, título y descripción. Después de eso, creamos Container() fuera del widget Expanded() para construir puntos de altura y ancho específicos enfila _

Dart

@override
  Widget build(BuildContext context) {
    return Scaffold(
 
      // Column created
      body: Column(
        children: [
          Expanded(
             
            // PageView Builder
            child: PageView.builder(
                scrollDirection: Axis.horizontal,
                onPageChanged: (value){
                  setState(() {
                    currentIndex = value;
                  });
                },
                itemCount: slides.length,
                itemBuilder: (context, index){
                   
                  // Contents of Slider that we
                  // created in Modal Class
                  return Slider(
                    image: slides[index].getImage(),
                    title: slides[index].getTitle(),
                    description: slides[index].getDescription(),
                  );
                }
            ),
          ),
           
          // Container created for dots
          Container(
            child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: List.generate(slides.length, (index) => buildDot(index, context),
              ),
            ),
          ),

Paso 3: extraiga el punto de compilación() de ese contenedor()

Después de eso, extrajimos buildDot() de ese Container() y devolvimos otro Container(). En el que hemos dado altura, ancho, boxDecoration() en el que hemos dado color y radio de borde a nuestros puntos.

Dart

Container buildDot(int index, BuildContext context){
 
  // Another Container returned
    return Container(
      height: 10,
      width: currentIndex == index ? 25 : 10,
      margin: EdgeInsets.only(right: 5),
      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(20),
        color: Colors.green,
      ),
    );
  }
}

Paso 4: Crea otro Contenedor()

Después de eso, hemos dado otro Container() en el que hemos dado Flat Button() en el que hemos declarado la condición para los métodos onPressed() . En el cual, después de hacer clic en el botón, aparecerá el control deslizante y luego el usuario será navegado a la siguiente pantalla. Y después de eso, le hemos dado color al texto y le hemos dado un radio circular al botón.

Dart

Container(
           height: 60,
           margin: EdgeInsets.all(40),
           width: double.infinity,
           color: Colors.green,
   
           // Button
           child: FlatButton(
             child: Text(
                 currentIndex == slides.length - 1 ? "Continue": "Next"),
             onPressed: (){
               if(currentIndex == slides.length - 1){
                  
                 // Navigate to next screen
                 Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=> Screen1()),
                 );
               }
               _controller.nextPage(duration: Duration(milliseconds: 100), curve: Curves.bounceIn);
             },
             textColor: Colors.white,
 
             // Border radius to button
             shape: RoundedRectangleBorder(
               borderRadius: BorderRadius.circular(25),
             ),
           ),
 
         ),

Paso 5: cree un widget sin estado para la clase Slider

Después de eso, hemos creado el widget Stateless() para la clase Slider que hemos devuelto en PageView. constructor. En el que hemos devuelto Container() que consiste en Column() que contiene el título y la descripción de nuestra imagen organizados en Column(). 

Dart

class Slider extends StatelessWidget {
  String image,title,description;
   
  //Constructor created
  Slider({this.image, this.title, this.description});
 
  @override
  Widget build(BuildContext context) {
    return Container(
 
      // column containing image
      // title and description
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Image(image: AssetImage(image)),
          SizedBox(height: 20),
          Text(title, style: TextStyle(fontSize: 18, fontWeight: FontWeight.w600),),
          SizedBox(height: 12),
          Text(description),
          SizedBox(height: 25),
        ],
      ),
    );
  }
}

Paso 6: Crea la clase SliderModel()

Después de eso, creamos la clase SliderModel() que consiste en una lista de imágenes, título y descripción que se mostrará en la vista de página. En esta clase hemos creado un constructor para tres variables imagen, título y descripción. Luego hemos declarado el método getter y setter a esta variable. 

Dart

class SliderModel{
  String image;
  String title;
  String description;
 
   
  // Constructor for variables
  SliderModel({this.title, this.description, this.image});
 
  void setImage(String getImage){
    image = getImage;
  }
 
  void setTitle(String getTitle){
    title = getTitle;
  }
  void setDescription(String getDescription){
    description = getDescription;
  }
 
  String getImage(){
    return image;
  }
 
   String  getTitle(){
    return title;
   }
   String getDescription(){
    return description;
   }
  }
 
  // List created
  List<SliderModel> getSlides(){
  List<SliderModel> slides = new List<SliderModel>();
  SliderModel sliderModel = new SliderModel();
   
   // Item 1
   sliderModel.setImage("images/slider2.png");
   sliderModel.setTitle("Copper Articles");
   sliderModel.setDescription("Interested in buying Copper Handicrafts");
   slides.add(sliderModel);
 
   sliderModel = new SliderModel();
 
  // Item 2
  sliderModel.setImage("images/slider2.png");
  sliderModel.setTitle("Copper Articles");
  sliderModel.setDescription("Interested in buying Copper Handicrafts");
  slides.add(sliderModel);
 
  sliderModel = new SliderModel();
 
  // Item 3
  sliderModel.setImage("images/slider2.png");
  sliderModel.setTitle("Copper Articles");
  sliderModel.setDescription("Interested in buying Copper Handicrafts");
  slides.add(sliderModel);
 
  sliderModel = new SliderModel();
  return slides;
}

La clase SliderModel() se define como se muestra a continuación:

Dart

class SliderModel{
  String image;
 
// images given
  SliderModel({this.image});
 
// setter for image
  void setImage(String getImage){
    image = getImage;
  }
 
// getter for image
  String getImage(){
    return image;
  }
  }
    List<SliderModel> getSlides(){
  List<SliderModel> slides = new List<SliderModel>();
  SliderModel sliderModel = new SliderModel();
   
  // 1
      sliderModel.setImage("images/slider2.png");
      slides.add(sliderModel);
 
      sliderModel = new SliderModel();
 
  // 2
  sliderModel.setImage("images/slider2.png");
  slides.add(sliderModel);
 
  sliderModel = new SliderModel();
 
  // 3
  sliderModel.setImage("images/slider2.png");
  slides.add(sliderModel);
 
  sliderModel = new SliderModel();
  return slides;
}

En esta etapa, la página de inicio se ve a continuación:

Dart

import 'package:flutter/material.dart';
import 'package:kc0035a_flutter_customer_app/Screen1.dart';
import 'package:kc0035a_flutter_customer_app/data/SliderModel.dart';
 
class HomeScreen extends StatefulWidget {
  @override
  _HomeScreenState createState() => _HomeScreenState();
}
 
class _HomeScreenState extends State<HomeScreen> {
 
  List<SliderModel> slides = new List<SliderModel>();
  int currentIndex = 0;
  PageController _controller;
 
  @override
  void initState() {
 
    // TODO: implement initState
    super.initState();
    _controller = PageController(initialPage: 0);
    slides = getSlides();
  }
  @override
  void dispose(){
    _controller.dispose();
    super.dispose();
  }
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Geeks for Geeks"),
      ),
      body: Column(
        children: [
          Expanded(
            child: PageView.builder(
                scrollDirection: Axis.horizontal,
                onPageChanged: (value){
                  setState(() {
                    currentIndex = value;
                  });
                },
                itemCount: slides.length,
                itemBuilder: (context, index){
 
                  // contents of slider
                  return Slider(
                    image: slides[index].getImage(),
                
                  );
                }
            ),
          ),
          Container(
            child: Row(
              mainAxisAlignment: MainAxisAlignment.center,
              children: List.generate(slides.length, (index) => buildDot(index, context),
              ),
            ),
          ),
          Container(
            height: 60,
            margin: EdgeInsets.all(40),
            width: double.infinity,
            color: Colors.green,
            child: FlatButton(
              child: Text(
                  currentIndex == slides.length - 1 ? "Continue": "Next"),
              onPressed: (){
                if(currentIndex == slides.length - 1){
                  Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=> Screen1()),
                  );
                }
                _controller.nextPage(duration: Duration(milliseconds: 100), curve: Curves.bounceIn);
              },
              textColor: Colors.white,
              shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.circular(25),
              ),
            ),
 
          ),
        ],
      ),
      backgroundColor: Colors.white,
    );
  }
 
  // container created for dots
  Container buildDot(int index, BuildContext context){
    return Container(
      height: 10,
      width: currentIndex == index ? 25 : 10,
      margin: EdgeInsets.only(right: 5),
      decoration: BoxDecoration(
        borderRadius: BorderRadius.circular(20),
        color: Colors.green,
      ),
    );
  }
}
 
// ignore: must_be_immutable
// slider declared
class Slider extends StatelessWidget {
  String image;
 
  Slider({this.image});
 
  @override
  Widget build(BuildContext context) {
    return Expanded(
 
      // contains container
      child: Container(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
 
            // image given in slider
            Image(image: AssetImage(image)),
            SizedBox(height: 25),
          ],
        ),
      ),
    );
  }
}

El archivo main.dart:

Dart

import 'package:flutter/material.dart';
import 'package:kc0035a_flutter_customer_app/SplashScreen.dart';
 
void main() {
  runApp(MyApp());
}
// stateless widget created
class MyApp extends StatelessWidget {
 
  // This widget is the root
  // of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.green,
      ),
 
      // first screen of app
      home: HomeScreen(),
    );
  }
}

Producción:

Publicación traducida automáticamente

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