Flutter资源预加载插件gh_asset_pre_cache的使用

Flutter资源预加载插件gh_asset_pre_cache的使用

版本0.0.3发布

自动化图像预缓存功能添加: 自动从应用程序的资源文件夹中预加载图像以增强性能。

使用方法

  1. 在项目中添加该插件。
dependencies:
  gh_asset_pre_cache: ^0.0.1
  1. 在终端中运行以下命令来安装插件。
flutter pub get
  1. 从应用的任何部分调用插件以自动执行图像预缓存。
import 'package:gh_asset_pre_cache/gh_asset_pre_cache.dart';

// ...

void precacheImages() {
  GhAssetPreCache().startImageCache();
}

有何不同?

注意事项

  • 此版本提供了基本的自动化预缓存功能。
  • 未来更新将包含更多功能和详细配置。

Bug修复

  • 本版本中无bug修复。

其他变更

  • 本版本标志着插件的初始发布。欢迎反馈和建议。

现在,通过此插件自动管理图像预缓存以优化您的应用程序性能!期待未来的更多更新。请随时在GitHub仓库中提供反馈或报告问题。感谢您的支持!


示例代码

import 'package:example/pages/image_cache_page.dart';
import 'package:flutter/material.dart';
import 'package:gh_asset_pre_cache/gh_asset_pre_cache.dart';

void main() {
  // 启动图像预缓存
  GhAssetPreCache().startImageCache();
  runApp(const MyApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      initialRoute: '/',
      routes: {
        '/': (context) => const FeatureList(),
        FeatureEnum.imageCache.route: (context) => const ImageCachePage(),
      },
    );
  }
}

class FeatureList extends StatelessWidget {
  const FeatureList({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: SafeArea(
        top: false,
        child: Center(child: _buildBody()),
      ),
    );
  }

  // 构建列表项
  Widget _buildBody(){
    return ListView.builder(
      physics: const NeverScrollableScrollPhysics(), // 禁止滚动
      shrinkWrap: true,
      itemCount: FeatureEnum.values.length,
      itemBuilder : listItem,
    );
  }

  // 列表项点击事件
  Widget listItem(BuildContext context, int index){
    var currentFeature = FeatureEnum.values[index];
    return GestureDetector(
      onTap: currentFeature.onTap(context), // 导航到对应页面
      child: Container(
        decoration: BoxDecoration(
            border: Border.all(color: Colors.black),
            borderRadius: const BorderRadius.all(Radius.circular(10))
        ),
        margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
        width: double.infinity,
        height: 70,
        alignment: Alignment.center,
        child: Text(currentFeature.name, style: const TextStyle(
          fontSize: 20,
        ),),
      ),
    );
  }
}

// 功能枚举
enum FeatureEnum{
  imageCache('/imageCache', 'image cache'); // 图像缓存功能

  final String route;
  final String name;
  const FeatureEnum(this.route, this.name);
}

// 功能扩展
extension FeatureEnumExtention on FeatureEnum{
  VoidCallback onTap(BuildContext context) => (){Navigator.pushNamed(context, route);}; // 导航到指定路由
}

更多关于Flutter资源预加载插件gh_asset_pre_cache的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter资源预加载插件gh_asset_pre_cache的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用gh_asset_pre_cache插件进行资源预加载的示例代码。

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

dependencies:
  flutter:
    sdk: flutter
  gh_asset_pre_cache: ^最新版本号 # 请替换为实际的最新版本号

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

接下来,你可以按照以下步骤在你的Flutter项目中使用这个插件进行资源预加载。

1. 初始化预加载配置

在你的项目中创建一个配置类来定义需要预加载的资源。例如,可以创建一个名为AssetPreloadConfig的Dart文件:

// asset_preload_config.dart
import 'package:gh_asset_pre_cache/gh_asset_pre_cache.dart';

class AssetPreloadConfig {
  static List<PreloadAsset> getPreloadAssets() {
    return [
      PreloadAsset(
        name: 'example_image',
        url: 'https://example.com/image.png', // 替换为你的实际资源URL
        type: PreloadAssetType.image,
      ),
      PreloadAsset(
        name: 'example_font',
        url: 'https://example.com/font.ttf', // 替换为你的实际资源URL
        type: PreloadAssetType.font,
      ),
      // 可以继续添加其他资源
    ];
  }
}

2. 在应用启动时预加载资源

main.dart文件中,使用GhAssetPreCache来预加载资源。

import 'package:flutter/material.dart';
import 'package:gh_asset_pre_cache/gh_asset_pre_cache.dart';
import 'asset_preload_config.dart'; // 导入配置类

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

  // 预加载资源
  await GhAssetPreCache.preloadAssets(AssetPreloadConfig.getPreloadAssets());

  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flutter Resource Preload Example'),
        ),
        body: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,
            children: <Widget>[
              Image.network(
                'https://example.com/image.png', // 这里的URL应该与预加载的URL相同
                loadingBuilder: (context, child, loadingProgress) {
                  if (loadingProgress == null) return child;
                  return CircularProgressIndicator(
                    value: loadingProgress.progress,
                  );
                },
              ),
              // 你可以在这里添加其他使用预加载资源的UI组件
            ],
          ),
        ),
      ),
    );
  }
}

3. 验证资源预加载

运行你的Flutter应用,观察在启动过程中资源是否已经被预加载。你可以通过查看网络请求的日志或者使用开发者工具来验证资源是否已经被缓存。

注意事项

  • 确保所有需要预加载的资源URL是有效的,并且你有权限访问这些资源。
  • 如果资源是动态变化的(比如用户上传的图片),则不适合使用资源预加载。
  • 预加载资源会占用存储空间,因此需要谨慎选择需要预加载的资源。

希望这个示例代码能够帮助你在Flutter项目中使用gh_asset_pre_cache插件进行资源预加载。

回到顶部