Fix custom fonts on Windows (#14191)
Fixes https://github.com/flutter/flutter/issues/13870.
This commit is contained in:
parent
159db5ca44
commit
733bd04904
@ -118,7 +118,7 @@ class AssetBundle {
|
||||
for (String packageName in packageMap.map.keys) {
|
||||
final Uri package = packageMap.map[packageName];
|
||||
if (package != null && package.scheme == 'file') {
|
||||
final String packageManifestPath = package.resolve('../pubspec.yaml').path;
|
||||
final String packageManifestPath = fs.path.fromUri(package.resolve('../pubspec.yaml'));
|
||||
final FlutterManifest packageFlutterManifest = await FlutterManifest.createFromPath(packageManifestPath);
|
||||
if (packageFlutterManifest == null)
|
||||
continue;
|
||||
|
51
packages/flutter_tools/test/asset_test.dart
Normal file
51
packages/flutter_tools/test/asset_test.dart
Normal file
@ -0,0 +1,51 @@
|
||||
// Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
// Use of this source code is governed by a BSD-style license that can be
|
||||
// found in the LICENSE file.
|
||||
|
||||
import 'dart:async';
|
||||
|
||||
import 'package:flutter_tools/src/asset.dart';
|
||||
import 'package:flutter_tools/src/base/file_system.dart';
|
||||
import 'package:flutter_tools/src/cache.dart';
|
||||
import 'package:test/test.dart';
|
||||
import 'src/common.dart';
|
||||
import 'src/context.dart';
|
||||
|
||||
void main() {
|
||||
group('Assets', () {
|
||||
final String dataPath = fs.path.join(
|
||||
getFlutterRoot(),
|
||||
'packages',
|
||||
'flutter_tools',
|
||||
'test',
|
||||
'data',
|
||||
'asset_test',
|
||||
);
|
||||
|
||||
setUpAll(() {
|
||||
Cache.disableLocking();
|
||||
});
|
||||
|
||||
// This test intentionally does not use a memory file system to ensure
|
||||
// that AssetBundle with fonts also works on Windows.
|
||||
testUsingContext('app font uses local font file', () async {
|
||||
final AssetBundle asset = new AssetBundle();
|
||||
await asset.build(
|
||||
manifestPath : fs.path.join(dataPath, 'main', 'pubspec.yaml'),
|
||||
packagesPath: fs.path.join(dataPath, 'main', '.packages'),
|
||||
includeDefaultFonts: false,
|
||||
);
|
||||
|
||||
expect(asset.entries.containsKey('FontManifest.json'), isTrue);
|
||||
expect(
|
||||
await getValueAsString('FontManifest.json', asset),
|
||||
'[{"family":"packages/font/test_font","fonts":[{"asset":"packages/font/test_font_file"}]}]',
|
||||
);
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
Future<String> getValueAsString(String key, AssetBundle asset) async {
|
||||
return new String.fromCharCodes(await asset.entries[key].contentsAsBytes());
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
name: font
|
||||
description: A test project that contains a font.
|
||||
flutter:
|
||||
uses-material-design: true
|
||||
fonts:
|
||||
- family: test_font
|
||||
fonts:
|
||||
- asset: test_font_file
|
@ -0,0 +1 @@
|
||||
This is a fake font.
|
@ -0,0 +1 @@
|
||||
font:../font/lib/
|
@ -0,0 +1,6 @@
|
||||
name: main
|
||||
description: A test project that has a package with a font as a dependency.
|
||||
|
||||
dependencies:
|
||||
font:
|
||||
path: ../font
|
Loading…
x
Reference in New Issue
Block a user