Flutter启动画面插件secondsplash的使用

Flutter启动画面插件secondsplash的使用

SecondSplash

实现了在原生启动画面结束后实现平滑过渡的Flutter启动画面。

MIT License

为什么使用这个插件?

大多数插件都是通过计时器来关闭启动画面的,因此你需要猜测启动画面将在多少秒后关闭。这个插件旨在解决这一不足之处,允许你手动关闭启动画面,当你认为所有内容都准备就绪时即可关闭。

注意
这不是原生启动画面
建议与其他原生启动画面插件结合使用以获得最佳效果。

如何关闭启动画面?

  1. 首先初始化启动画面控制器:
SplashController splashController = SplashController();
  1. 然后将控制器添加到启动画面中:
SecondSplash(
    controller: splashController,
    ...
</code></pre>
</section>

3. 当准备好时,关闭启动画面:

```dart
splashController.close();

使用/示例

以下是一个完整的示例代码,展示了如何使用secondsplash插件:

import 'package:flutter/material.dart';

import 'package:secondsplash/secondsplash.dart';
import 'package:shared_preferences/shared_preferences.dart';

import 'page/auth.dart';
import 'page/home.dart';

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

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  SplashController splashController = SplashController();

  bool loggedIn = false;

  [@override](/user/override)
  void initState() {
    super.initState();
    checkLogin();
  }

  void checkLogin() async {
    // 检查用户是否已登录
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      loggedIn = prefs.getBool("loggedIn") ?? false;
    });

    // 准备完成后关闭启动画面
    splashController.close();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      home: SecondSplash(
        controller: splashController,

        // 可选配置项
        // systemUiOverlayStyle: SystemUiOverlayStyle(
        //   statusBarColor: Colors.transparent,
        //   statusBarBrightness: Brightness.light,
        //   systemNavigationBarColor: Colors.white,
        //   systemNavigationBarIconBrightness: Brightness.dark,
        // ),

        // 可选背景装饰
        // decoration: BoxDecoration(
        //   color: Colors.white,
        // ),

        // 可选自定义加载动画
        // child: Center(
        //   child: Container(
        //     height: 60,
        //     child: Column(
        //       children: [
        //         Container(
        //           width: 20,
        //           height: 20,
        //           child: CircularProgressIndicator(
        //             color: Colors.white,
        //             strokeWidth: 1,
        //           ),
        //         ),
        //         SizedBox(
        //           height: 10,
        //         ),
        //         Text(
        //           "Loading Data",
        //           style: TextStyle(
        //             color: Colors.white,
        //           ),
        //         ),
        //       ],
        //     ),
        //   ),
        // ),

        // 根据登录状态跳转页面
        next: loggedIn ? Home() : Auth(),
      ),
    );
  }
}

更多关于Flutter启动画面插件secondsplash的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter启动画面插件secondsplash的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


secondsplash 是一个用于在 Flutter 应用中实现启动画面(Splash Screen)的插件。它允许你自定义启动画面的显示时间、背景颜色、图片等。以下是使用 secondsplash 插件的基本步骤:

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  secondsplash: ^1.0.0  # 请使用最新版本

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

2. 创建启动画面

在你的 Flutter 项目中,创建一个新的 Dart 文件,例如 splash_screen.dart,并在其中编写启动画面的代码。

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

class SplashScreen extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return SecondSplash(
      seconds: 3,  // 启动画面显示的时间(秒)
      navigateAfterSeconds: '/home',  // 启动画面结束后跳转的页面
      image: Image.asset('assets/splash.png'),  // 启动画面的图片
      backgroundColor: Colors.white,  // 启动画面的背景颜色
      loaderColor: Colors.blue,  // 加载指示器的颜色
    );
  }
}

3. 配置路由

main.dart 文件中,配置路由以便在启动画面结束后跳转到主页面。

import 'package:flutter/material.dart';
import 'splash_screen.dart';  // 导入启动画面文件
import 'home_screen.dart';  // 导入主页面文件

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

class MyApp extends StatelessWidget {
  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Splash Screen',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      initialRoute: '/',
      routes: {
        '/': (context) => SplashScreen(),  // 启动画面
        '/home': (context) => HomeScreen(),  // 主页面
      },
    );
  }
}

4. 添加资源文件

确保在 pubspec.yaml 文件中添加了启动画面图片的资源路径:

flutter:
  assets:
    - assets/splash.png

5. 运行应用

现在,你可以运行你的 Flutter 应用,启动画面将会显示 3 秒钟,然后自动跳转到主页面。

6. 自定义

你可以根据需要自定义 SecondSplash 的其他属性,例如:

  • imageFit: 图片的填充方式(如 BoxFit.cover)。
  • loadingText: 加载时的文本。
  • photoSize: 图片的大小。
SecondSplash(
  seconds: 3,
  navigateAfterSeconds: '/home',
  image: Image.asset('assets/splash.png'),
  backgroundColor: Colors.white,
  loaderColor: Colors.blue,
  imageFit: BoxFit.cover,
  loadingText: Text('Loading...'),
  photoSize: 100.0,
);

7. 处理异步操作

如果你需要在启动画面期间执行一些异步操作(如初始化数据),可以使用 FutureBuilderStreamBuilder 来替代 SecondSplash

class SplashScreen extends StatelessWidget {
  Future<void> initializeApp() async {
    // 模拟一些异步操作
    await Future.delayed(Duration(seconds: 3));
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return FutureBuilder(
      future: initializeApp(),
      builder: (context, snapshot) {
        if (snapshot.connectionState == ConnectionState.done) {
          // 异步操作完成后跳转到主页面
          WidgetsBinding.instance.addPostFrameCallback((_) {
            Navigator.of(context).pushReplacementNamed('/home');
          });
        }
        return Scaffold(
          backgroundColor: Colors.white,
          body: Center(
            child: Image.asset('assets/splash.png'),
          ),
        );
      },
    );
  }
}
回到顶部