Flutter引导页插件onboard_ease的使用

Flutter引导页插件onboard_ease的使用

OnboardEase 是一个简化 Flutter 应用程序引导页创建的插件。通过此插件,您可以轻松自定义引导页面并为用户提供无缝的介绍体验。

特性

  • 高度可定制的引导页面
  • 内置页面指示器。
  • 简单直观的 API。

视觉样本

引导页示例

环境

sdk: ">=3.2.3 <4.0.0"
flutter: ">=1.17.0"

安装

要安装 onboard_ease,将其添加到您的 pubspec.yaml 文件中:

dependencies:
  onboard_ease: ^0.0.1

然后运行以下命令以获取包:

flutter pub get

使用

首先,在您的 Dart 文件中导入包:

import 'package:onboard_ease/onboard_ease.dart';

接下来,创建一个 CustomOnboardingScreen 的实例:

OnboardEase(
  pages: <Widget>[
    PageOne(),
    PageTwo(),
    PageThree(),
  ],
  indicatorDecoration: BoxDecoration(color: Colors.blue),
  context: context,
)

在此示例中,PageOne()PageTwo()PageThree() 是代表单独引导页面的小部件。请根据需要替换为您自己的小部件。

示例

以下是一个使用 OnboardEase 的基本示例:

main.dart

import 'package:custom_onboarding/onboard_ease.dart';
import 'package:custom_onboarding/onboardingPages.dart';
import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return const MaterialApp(
      title: 'Flutter Demo',
      debugShowCheckedModeBanner: false,
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      extendBodyBehindAppBar: true,
      appBar: AppBar(
        backgroundColor: Colors.transparent,
        elevation: 0,
      ),
      body: OnboardEase(
        context: context,
        pages: [
          OnboardingPage(
            title: '第一页',
            description: "这是我们的引导屏的第一页。",
            imageUrl: "https://wallpapercave.com/wp/wp9188629.jpg",
          ),
          OnboardingPage(
            title: '第二页',
            description: "这是我们的引导屏的第二页。",
            imageUrl:
                "https://e1.pxfuel.com/desktop-wallpaper/854/898/desktop-wallpaper-neutral-minimalist-aesthetic-minimalistic-summer.jpg",
          ),
          OnboardingPage(
            title: '第三页',
            description: "这是我们的引导屏的第三页。",
            imageUrl:
                "https://i.pinimg.com/736x/89/2d/de/892dde1fc41eba573a249f9355878d77.jpg",
          ),
          OnboardingPage(
            title: '最后一页',
            description: "这是我们的引导屏的最后一页。",
            imageUrl:
                "https://i.pinimg.com/564x/13/4d/5a/134d5a7c1b950b7fa5523006ccfabd5a.jpg",
          ),
        ],
      ),
    );
  }
}

onBoardingPages.dart(非必要文件)

import 'package:flutter/material.dart';

class OnboardingPage extends StatelessWidget {
  final String title;
  final String description;
  final String imageUrl;

  OnboardingPage({
    required this.title,
    required this.description,
    required this.imageUrl,
  });

  [@override](/user/override)
  Widget build(BuildContext context) {
    double screenHeight = MediaQuery.of(context).size.height;
    double screenWidth = MediaQuery.of(context).size.width;
    return Expanded(
      child: Stack(
        // mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Image.network(
            imageUrl,
            width: screenWidth,
            height: screenHeight,
            fit: BoxFit.cover,
          ),
          Center(
            child: Column(
              children: [
                SizedBox(height: screenHeight / 1.5),
                Text(
                  title,
                  style: const TextStyle(
                      color: Colors.white,
                      fontSize: 28.0,
                      fontWeight: FontWeight.bold),
                ),
                Padding(
                  padding: const EdgeInsets.fromLTRB(12, 8, 12, 0),
                  child: Text(
                    description,
                    textAlign: TextAlign.center,
                    style: const TextStyle(color: Colors.white, fontSize: 20.0),
                  ),
                ),
              ],
            ),
          ),
        ],
      ),
    );
  }
}

更多关于Flutter引导页插件onboard_ease的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter引导页插件onboard_ease的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


onboard_ease 是一个用于在 Flutter 应用中创建引导页的插件。它可以帮助你快速构建美观的引导页,通常用于向用户展示应用的功能或特性。以下是如何使用 onboard_ease 插件的步骤。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 onboard_ease 依赖:

dependencies:
  flutter:
    sdk: flutter
  onboard_ease: ^1.0.0  # 请检查最新版本

然后运行 flutter pub get 来获取依赖。

2. 导入包

在需要使用 onboard_ease 的 Dart 文件中导入包:

import 'package:onboard_ease/onboard_ease.dart';

3. 创建引导页

使用 OnboardEase 组件来创建引导页。你可以通过 pages 参数来定义每一页的内容。

class OnboardingScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: OnboardEase(
        pages: [
          OnboardEasePage(
            title: 'Welcome to My App',
            description: 'This is the first page of the onboarding screen.',
            image: Image.asset('assets/images/onboarding1.png'),
          ),
          OnboardEasePage(
            title: 'Explore Features',
            description: 'Discover all the amazing features of our app.',
            image: Image.asset('assets/images/onboarding2.png'),
          ),
          OnboardEasePage(
            title: 'Get Started',
            description: 'Start using the app and enjoy the experience!',
            image: Image.asset('assets/images/onboarding3.png'),
          ),
        ],
        onDone: () {
          // 引导页完成后执行的操作
          Navigator.of(context).pushReplacement(
            MaterialPageRoute(builder: (context) => HomeScreen()),
          );
        },
      ),
    );
  }
}

4. 自定义样式

你可以通过 OnboardEase 的各种参数来自定义引导页的样式,例如按钮颜色、文本样式等。

OnboardEase(
  pages: [
    // 你的页面
  ],
  onDone: () {
    // 完成后的操作
  },
  buttonColor: Colors.blue,  // 按钮颜色
  buttonText: 'Get Started',  // 按钮文本
  buttonTextStyle: TextStyle(color: Colors.white),  // 按钮文本样式
  pageIndicatorColor: Colors.grey,  // 页面指示器颜色
  activePageIndicatorColor: Colors.blue,  // 当前页面指示器颜色
)

5. 运行应用

最后,运行你的 Flutter 应用,你应该会看到引导页的效果。

6. 其他功能

onboard_ease 还支持其他一些功能,例如跳过按钮、自定义动画等。你可以查看插件的文档以了解更多详细信息。

7. 示例代码

以下是一个完整的示例代码:

import 'package:flutter/material.dart';
import 'package:onboard_ease/onboard_ease.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      home: OnboardingScreen(),
    );
  }
}

class OnboardingScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: OnboardEase(
        pages: [
          OnboardEasePage(
            title: 'Welcome to My App',
            description: 'This is the first page of the onboarding screen.',
            image: Image.asset('assets/images/onboarding1.png'),
          ),
          OnboardEasePage(
            title: 'Explore Features',
            description: 'Discover all the amazing features of our app.',
            image: Image.asset('assets/images/onboarding2.png'),
          ),
          OnboardEasePage(
            title: 'Get Started',
            description: 'Start using the app and enjoy the experience!',
            image: Image.asset('assets/images/onboarding3.png'),
          ),
        ],
        onDone: () {
          Navigator.of(context).pushReplacement(
            MaterialPageRoute(builder: (context) => HomeScreen()),
          );
        },
        buttonColor: Colors.blue,
        buttonText: 'Get Started',
        buttonTextStyle: TextStyle(color: Colors.white),
        pageIndicatorColor: Colors.grey,
        activePageIndicatorColor: Colors.blue,
      ),
    );
  }
}

class HomeScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Home'),
      ),
      body: Center(
        child: Text('Welcome to the Home Screen!'),
      ),
    );
  }
}
回到顶部