当应用程序加载时,我正在尝试加载一些 json:
final contentJson = await rootBundle.loadString('assets/content.json');
但是应用程序加载卡住并且显示白屏。控制台中没有出现任何错误。
这是我的
pubspec.yaml
:
flutter:
generate: true
uses-material-design: true
assets:
- assets/icons/
- assets/images/
- assets/fonts/
- assets/content.json
我猜测这与网络应用程序有关。因为这在其他平台上不会发生。
这里是围绕调用的完整代码:
home_data_provider.dart
@override
Future<List<ArticleDto>> getArticleDtos() async {
final contentJson = await rootBundle.loadString('assets/content.json');
final content = json.decode(contentJson) as Iterable<Map<String, dynamic>>;
return List<ArticleDto>.from(
content.map((articleData) async {
final articlePath = articleData['articlePath'] as String;
final article = await rootBundle.loadString(articlePath);
return ArticleDto(
title: articleData['title'] as String,
topic: articleData['topic'] as String,
articleInMarkdown: article,
imagePath: articleData['imagePath'] as String,
createdAt: articleData['createdAt'] as String,
);
}),
);
}
home_repository.dart
@override
Future<List<ArticleEntity>> getArticles() async {
final articleDtos = await _dataProvider.getArticleDtos();
return _articlesConverter.convertMultiple(articleDtos).toList();
}
home_page.dart
Scaffold(
body: BlocProvider(
create: createHomeCubit,
child: SomeChild()),
);
create_home_cubit.dart
HomeCubit createHomeCubit(BuildContext context) {
final localeService = context.read<ILocaleService>();
return HomeCubit(
context.read<IThemeService>(),
context.read<ILocaleService>(),
HomeRepository(
articlesConverter: ArticlesConverter(),
dataProvider: HomeDataProvider(localeService.currentLocale.languageCode),
),
);
}
getArticles
将在 cubit 构造函数中调用。
这是预期的答案:
import 'package:flutter/services.dart' show rootBundle;
Future<Map<String, dynamic>> loadJsonData() async {
// Load the JSON file using rootBundle
String jsonString = await rootBundle.loadString('assets/content.json');
// Parse the JSON string
Map<String, dynamic> jsonData = json.decode(jsonString);
return jsonData;
}