Flutter 自定义包未加载字体和图片 | 扑

Muh*_*lha 5 dart flutter

我正在创建一个包。我在 lib 目录连续添加了两个目录:字体和图像。我还在 pubspec.yaml 文件中添加了所需的代码,以使用包中的这些字体和图像。我在包目录中创建了一个示例目录,以便测试我正在创建的包,但测试应用程序不会从包中选取字体和图像并给出异常:

FlutterError(无法加载资源:images/abc.png)

目录截图[1]:https://i.stack.imgur.com/po8oT.png

pubspec.yaml:

name: customtestingpackage
description: A new Flutter package project.
version: 0.0.1
author:
homepage:

environment:
  sdk: ">=2.7.0 <3.0.0"
  flutter: ">=1.17.0"

dependencies:
  flutter:
    sdk: flutter
  cupertino_icons:
  
dev_dependencies:
  flutter_test:
    sdk: flutter

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

  fonts:
    - family: Comfortaa
      fonts:
        - asset: fonts/comfortaa/Comfortaa-Regular.ttf
          weight: 400
        - asset: fonts/comfortaa/Comfortaa-Medium.ttf
          weight: 500
    - family: Poppins
      fonts:
        - asset: fonts/poppins/Poppins-Regular.ttf
          weight: 400
        - asset: fonts/poppins/Poppins-Medium.ttf
          weight: 500
Run Code Online (Sandbox Code Playgroud)

main.dart: 字体的实现

style: TextStyle(
    fontSize: 24,
    fontWeight: FontWeight.w500,
    color: Colors.white,
    fontFamily: 'Poppins',
    letterSpacing: 1.25,
),
Run Code Online (Sandbox Code Playgroud)

Tob*_*obi 5

来自https://flutter.dev/docs/development/ui/assets-and-images#from-packages

要从包依赖项加载图像,必须向 AssetImage 提供包参数。

包本身使用的资源也应该使用上面的包参数来获取。

因此,在您的情况下,您应该能够通过如下方式加载图像:

  Image.asset(
    'images/image_a.png',
    package: 'customtestingpackage',
  ),
Run Code Online (Sandbox Code Playgroud)

这似乎也适用于字体。来自: https: //api.flutter.dev/flutter/painting/TextStyle-class.html

要使用包中定义的字体系列,必须提供包参数

如果包内部使用它定义的字体,则在创建文本样式时仍应指定包参数,如上例所示。