【问题标题】:Unable to load a resource in flutter无法在颤动中加载资源
【发布时间】:2019-10-01 06:51:36
【问题描述】:

我正在尝试在 Flutter 应用中读取文件。

文件存在于:

/assets/timezone/data/2019b.tzf

我的 pubspec 包含:

- assets/timezone/data/2019b.tzf

我的飞镖代码调用:

rootBundle.load('packages/timezone/data/2019b.tzf');

Flutter 返回以下内容:

Exception has occurred.
FlutterError (Unable to load asset: assets/timezone/data/2019b.tzf)

单元测试

import 'dart:typed_data';

import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  group("Test Load", () {
    test("load", () async {
      try {
        ByteData byteData =
            await rootBundle.load('assets/timezone/data/2019b.tzf');

          print("loaded successfully size: ${byteData.buffer.lengthInBytes}");
      } catch (e) {
        print(e);
      }
      print("done");
    });
  });
}*

pubspec.yaml

name: regions
description: A new Flutter project.

version: 1.0.0+1

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter

dev_dependencies:
  flutter_test:
    sdk: flutter

flutter:
  uses-material-design: true
assets:
    - assets/timezone/data/2019b.tzf

目录树:

├── assets
│   └── timezone
│       └── data
│           ├── 2019b.tzf
├── lib
├── pubspec.yaml
├── test
│   └── region_test.dart

【问题讨论】:

    标签: file flutter dart


    【解决方案1】:

    我认为您只能在您的应用中使用rootBundle.load('assets/timezone/data/2019b.tzf')

    在测试中你可以这样做:

    final bytes = File('assets/timezone/data/2019b.tzf').readAsBytesSync();
    final byteData = ByteData.view(bytes.buffer);
    

    【讨论】:

      【解决方案2】:

      在 pubspec.yaml 中,将“2019b.tzf”替换为最新的数据库版本(当前为“2020d.tzf”)。 您也可以使用“latest.tzf”

      flutter:
        ..
        ..
        assets:
          ..
          ..
          - assets/timezone/data/latest.tzf
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-01-08
        相关资源
        最近更新 更多