Flutter应用图标显示叉框问题求助(附配置及截图)
Flutter应用Akiba导航栏图标显示叉框问题
我正在开发一款名为Akiba的Flutter应用,目前遇到导航栏图标位置显示为叉框的问题。尝试添加自定义字体后仍无法解决该问题,相关截图及pubspec.yaml配置文件如下:
问题截图

pubspec.yaml配置
name: Akiba description: "Your Personal Financial Planner" publish_to: 'none' version: 1.0.0+1 environment: sdk: ^3.6.2 dependencies: flutter: sdk: flutter lottie: ^3.3.1 smooth_page_indicator: ^1.2.0+3 fl_chart: ^0.70.2 hive: ^2.2.3 hive_flutter: ^1.1.0 hive_generator: ^2.0.1 build_runner: ^2.4.14 intl: ^0.19.0 uuid: ^4.5.1 percent_indicator: ^4.2.4 flutter_local_notifications: ^18.0.1 flutter_riverpod: ^2.6.1 local_auth: ^2.3.0 flutter_animate: ^4.5.2 image_picker: ^1.1.2 path_provider: ^2.1.5 pdf: ^3.11.2 share_plus: ^10.1.4 printing: ^5.14.2 device_info_plus: ^11.3.0 flutter_launcher_icons: ^0.14.3 emoji_picker_flutter: ^4.3.0 timezone: ^0.10.0 cupertino_icons: ^1.0.8 google_fonts: ^6.2.1 flutter_localization: ^0.3.1 dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^5.0.0 flutter: assets: - assets/ - assets/savings.json - assets/money_growth.json - assets/icon.png - assets/fonts/ fonts: - family: NotoSans fonts: - asset: assets/fonts/NotoSans-Regular.ttf - family: NotoSansSymbols fonts: - asset: assets/fonts/NotoSansSymbols-Regular.ttf - family: NotoColorEmoji fonts: - asset: assets/fonts/NotoColorEmoji-Regular.ttf uses-material-design: true flutter_icons: image_path: 'assets/icon.png' android: true ios: true
解决方法
1. 验证字体文件有效性
- 检查
assets/fonts/目录下的字体文件是否存在,文件名、路径与pubspec配置完全匹配(注意大小写,iOS系统对大小写敏感)。 - 尝试重新下载对应字体的完整包,排除文件损坏问题。
2. 确保图标字体正确引用
- 如果使用Material图标:确认代码中调用的是
Icons.xxx而非自定义字符,且uses-material-design: true已开启(你的配置已满足)。 - 如果使用自定义符号字体:确保代码中指定了正确的字体家族,且字符存在于对应字体中,示例:
Text('\uXXXX', style: TextStyle(fontFamily: 'NotoSansSymbols'));
3. 清理缓存重启项目
- 执行
flutter clean清除旧构建缓存。 - 重启IDE和Flutter项目,触发资源和字体的重新加载。
4. 检查导航栏组件配置
- 临时将导航栏图标替换为
CupertinoIcons或Material默认图标,测试是否正常显示,排查是否是自定义图标本身的问题。
5. iOS额外配置
- 在
Info.plist中添加UIAppFonts数组,将自定义字体文件名加入其中,示例:<key>UIAppFonts</key> <array> <string>NotoSans-Regular.ttf</string> <string>NotoSansSymbols-Regular.ttf</string> </array> - 执行
flutter pub get后重新构建iOS项目。
内容的提问来源于stack exchange,提问作者Emily Mgimwa
相关产品推荐
相关产品推荐

