Flutter启动画面插件the_splash的使用

Flutter启动画面插件the_splash的使用

该插件简化了原生和第二个启动画面的创建。它使用flutter_native_splash来创建原生启动画面,并提供一个SplashScreen小部件,看起来与原生启动画面完全相同。

特性

  • 第二个启动画面看起来与原生启动画面完全相同。
  • 去除原生启动画面和第二个启动画面之间过渡时的闪烁。
  • 提供工具来构建你自己的启动画面。

开始使用

  1. 添加依赖项:

    dependencies:
        the_splash: ^0.3.0
    
  2. 配置原生启动画面:

    警告: 目前插件仅支持在flutter_native_splash.yaml文件中的配置。

    按照此说明配置原生启动画面。

  3. 配置资源:

    # pubspec.yaml
    flutter:
      assets:
        # 用于在应用程序中使用启动画面图像
        - assets/generated/
        # 读取配置
        - flutter_native_splash.yaml
    
  4. 运行命令:

    此命令运行flutter_native_splash并将为不同dpi生成的图像复制到assets/generated位置。

    flutter pub run the_splash
    
  5. 在应用程序中使用启动画面:

    void main() async {
      WidgetsFlutterBinding.ensureInitialized();
    
      // 在初始化绑定后添加以预加载启动画面资产和配置
      await SplashScreenData.preload();
    
      runApp(MaterialApp(home: SplashScreen()));
    }
    

    你也可以基于预加载的数据创建自定义启动画面,例如查看splash_screen.dart

完整示例代码

import 'package:flutter/material.dart';
import 'package:the_splash/splash_screen.dart';
import 'package:the_splash/the_splash.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // 预加载启动画面数据
  await SplashScreenData.preload();
  
  // 延迟4秒以检查原生启动画面
  await Future.delayed(const Duration(seconds: 4));

  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  // 延迟4秒以检查第二个启动画面
  final Future<void> init = Future.delayed(const Duration(seconds: 4));

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: FutureBuilder(
        future: init,
        builder: (context, snapshot) {
          if (snapshot.connectionState == ConnectionState.done) {
            return const MyHomePage(title: 'Flutter Demo Home Page');
          }
          // 显示启动画面
          return const SplashScreen();
        },
      ),
    );
  }
}

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

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用the_splash插件来创建启动画面的一个详细代码示例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  the_splash: ^3.0.0  # 请确保使用最新版本,版本号可能会有所不同

然后运行flutter pub get来安装依赖。

2. 配置启动画面

接下来,在项目的assets文件夹中创建一个启动画面的图片(例如launch_image.png),然后在pubspec.yaml中添加该图片到assets中。

flutter:
  assets:
    - assets/launch_image.png

3. 创建Splash配置

在项目的根目录下创建一个名为splash.yaml的文件,用于配置启动画面。

# splash.yaml
color: "#FFFFFF"  # 背景颜色
image: assets/launch_image.png  # 启动图片
duration: 3000  # 显示时间(毫秒)
navigate_after_seconds: 3  # 自动导航到主页的时间(秒)

4. 更新Main函数

在你的main.dart文件中,使用TheSplash.navigateAfterSeconds来启动应用,并根据配置自动导航到主页。

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

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await TheSplash.init(
    splashYamlPath: 'splash.yaml',  // 指定配置文件路径
  );
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter App with Splash Screen'),
        ),
        body: Center(
          child: Text('Welcome to the Home Page!'),
        ),
      ),
    );
  }
}

5. 启动应用

现在,当你运行你的Flutter应用时,它应该会显示配置好的启动画面,并在指定的时间后自动导航到主页。

注意事项

  • 确保splash.yaml文件路径正确。
  • 确保启动图片已经添加到assets中,并且在pubspec.yaml中正确配置。
  • 你可以根据需要调整splash.yaml中的配置,例如背景颜色、图片路径、显示时间等。

这个示例展示了如何使用the_splash插件来创建一个简单的Flutter启动画面。你可以根据需要进一步自定义和扩展这个示例。

回到顶部