Flutter自适应引导页插件flutter_onboarding_screen_adaptive的使用

发布于 1周前 作者 zlyuanteng 来自 Flutter

Flutter自适应引导页插件flutter_onboarding_screen_adaptive的使用

Onboarding Screen

flutter_onboarding_screen_adaptive 是一个 Flutter 插件,提供了一个可自定义的新用户引导页面。它包括一系列带有导航控件和动画的页面,旨在以用户友好的方式介绍应用的功能。

Created by @badiniibrahim

如果你喜欢我的工作,可以请我喝杯咖啡。感谢你的支持 ❤️ Buy Me A Coffee

Screenshot

IOS

Onboarding Screen IOS

Android

Onboarding Screen Android

Features

  • 水平页面导航,支持滑动手势。
  • 进度指示器显示当前的引导页面。
  • “Next” 和 “Skip” 按钮方便用户操作。
  • 页面之间的动画过渡。
  • 使用 GetX 进行高效的状态管理。

Getting Started

pubspec.yaml 文件中添加依赖:

dependencies:
  ...
  flutter_onboarding_screen_adaptive: latest_version

完整示例

以下是一个完整的示例,展示了如何使用 flutter_onboarding_screen_adaptive

import 'package:flutter/material.dart';
import 'package:flutter_onboarding_screen_adaptive/pages/onboarding_screen.dart';
import 'package:get/route_manager.dart';

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

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

  @override
  Widget build(BuildContext context) {
    return GetMaterialApp(
      home: OnboardingScreen(
        pages: const [
          PageOne(),
          PageTwo(),
          PageThree(),
        ],
        onSkipSelected: () {
          // 处理跳过操作
        },
        onGetStarted: () {
          // 处理开始操作
        },
        selectedColor: Colors.blue,
        unselectedColor: Colors.grey,
        indicatorSize: 20.0,
        skipText: "Skip",
        btnBackgroundColor: Colors.blue,
      ),
    );
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Column(children: [
      Image.asset(
        "assets/images/1.png",
      ),
      const Center(
        child: Text(
          'Best choice for everyone.',
          style: TextStyle(
            fontSize: 30,
            color: Colors.black,
            fontFamily: 'Gilroy',
          ),
        ),
      )
    ]);
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Column(children: [
      Image.asset(
        "assets/images/2.png",
      ),
      const Center(
        child: Text(
          textAlign: TextAlign.center,
          'Teachers & Learners',
          style: TextStyle(
            fontSize: 30,
            color: Colors.black,
            fontFamily: 'Gilroy',
          ),
        ),
      )
    ]);
  }
}

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

  @override
  Widget build(BuildContext context) {
    return Column(children: [
      const Center(
        child: Text(
          textAlign: TextAlign.center,
          'Best platform for both.Anywhere. Accelerate Your Future and beyond.',
          style: TextStyle(
            fontSize: 30,
            color: Colors.black,
            fontFamily: 'Gilroy',
          ),
        ),
      ),
      Image.asset(
        "assets/images/3.png",
      ),
    ]);
  }
}

Figma 链接

参数

  • pages: (必需) - 表示引导页面的 widget 列表。
  • selectedColor: 选中的页面指示器颜色,默认为 Colors.blue
  • unselectedColor: 未选中的页面指示器颜色,默认为 Colors.grey
  • indicatorSize: 页面指示器的大小,默认为 20.0
  • skipText: 跳过按钮的文本,默认为 “Skip”。
  • onSkipSelected: 跳过按钮被按下时的回调函数。
  • btnBackgroundColor: 导航按钮的背景颜色,默认为 Colors.blue
  • onGetStarted: 开始按钮被按下时的回调函数。

LinkedIn

LinkedIn 上与我联系。


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

1 回复

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


当然,以下是如何在Flutter项目中使用flutter_onboarding_screen_adaptive插件来实现自适应引导页的一个示例。这个插件可以帮助你轻松创建具有自适应布局和动画效果的引导页。

首先,确保你已经在pubspec.yaml文件中添加了flutter_onboarding_screen_adaptive依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_onboarding_screen_adaptive: ^x.y.z  # 请替换为最新版本号

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

接下来,你可以在你的Flutter项目中按照以下步骤使用flutter_onboarding_screen_adaptive插件。

主程序文件 (main.dart)

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Onboarding Screen Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: OnboardingScreen(),
    );
  }
}

class OnboardingScreen extends StatelessWidget {
  final List<Map<String, Object>> pages = [
    {
      'title': 'Welcome!',
      'description': 'This is the first page of the onboarding process.',
      'image': AssetImage('assets/images/page1.png'), // 替换为你的图片资源
    },
    {
      'title': 'Features',
      'description': 'Discover the amazing features of our app.',
      'image': AssetImage('assets/images/page2.png'), // 替换为你的图片资源
    },
    {
      'title': 'Get Started',
      'description': 'Join the community and start exploring now!',
      'image': AssetImage('assets/images/page3.png'), // 替换为你的图片资源
      'buttons': [
        OnboardingButton(
          text: 'Skip',
          onPressed: () {
            Navigator.pushReplacementNamed(context, '/home');
          },
        ),
        OnboardingButton(
          text: 'Get Started',
          color: Colors.blue,
          onPressed: () {
            Navigator.pushReplacementNamed(context, '/home');
          },
        ),
      ],
    },
  ];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: AdaptiveOnboardingScreen(
        pages: pages,
        dotsIndicatorColor: Colors.white,
        dotsDecoratorColor: Colors.grey,
        completeButtonText: 'Done',
        onPageChanged: (index) {
          print('Page changed to: $index');
        },
        onComplete: () {
          Navigator.pushReplacementNamed(context, '/home');
        },
      ),
    );
  }
}

图片资源

确保你已经在assets文件夹中添加了引导页所需的图片资源,并在pubspec.yaml中声明它们:

flutter:
  assets:
    - assets/images/page1.png
    - assets/images/page2.png
    - assets/images/page3.png

路由配置

你可能还需要在你的应用中配置路由,以便在引导页完成后导航到其他页面。你可以在main.dart文件中添加一个简单的路由配置:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Onboarding Screen Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      routes: {
        '/': (context) => OnboardingScreen(),
        '/home': (context) => HomeScreen(),
      },
      initialRoute: '/',
    );
  }
}

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

// ... (OnboardingScreen class remains the same)

以上代码展示了如何使用flutter_onboarding_screen_adaptive插件来创建一个包含三页引导页的Flutter应用,并在完成后导航到主屏幕。你可以根据需要调整标题、描述、图片和按钮等配置。

回到顶部