如何在Flutter中将资产图像从应用程序传递到包?

0g0grzrc  于 2023-04-22  发布在  Flutter
关注(0)|答案(1)|浏览(99)

我试图创建一个包含一些自定义部件的包。计划是我导入这个包,我只是开始在我的项目中使用这些部件。类似于UI组件库。为此,在部件中,我需要传递一个图像文件来装饰容器。我想将此图像文件从我的flutter项目传递到flutter包。但不是作为部件,而是作为文件路径。
所以我创建了一个这样的小部件

class ContainerDeco extends StatelessWidget {
  const ContainerDeco(this.src, {Key? key}) : super(key: key);
  final String src;
  @override
  Widget build(BuildContext context) {
    return Container(
      decoration: BoxDecoration(
        image: DecorationImage(
          image: AssetImage(src),
        ),
      ),
    );
  }
}

但是现在当我从我的项目文件中调用这个小部件时,它不工作了。

ContainerDeco('assets/images/lockup_flutter_horizontal.png',);

下面是我项目pubspec.yaml资产导入

flutter:
  uses-material-design: true
  assets:
    - assets/
    - assets/images/
oyjwcjzk

oyjwcjzk1#

如果我得到的问题,你想通过一些资产从项目到一个包或插件,为此你不能设置路径的资产,但你可以用户rootbundels
在项目中=〉

import 'package:flutter/services.dart';

String assetPath = 'assets/my_asset_file.svg';
var data = (await rootBundle.load(assetPath));

在包或插件中

import 'package:flutter/services.dart';

WIdget loadAsset(ByteData assetData) async {
  Uint8List svgBytes = assetData.buffer.asUint8List();

  
  // Do something with the asset data
  return SvgPicture.memory(svgBytes );
}

相关问题