E/flutter(8110):[错误:flutter/runtime/dart_vm_initializer.cc(41)]未处理的异常:将对象转换为可编码对象失败:“颜色”实例
我不断收到此错误
///
void setFontColor(Color newColor) async {
_fontColor = newColor;
// Convert the Color object to a hex color string
String hexColor = colorToHex(newColor);
await _prefs.setString('fontColor', hexColor);
notifyListeners();
}
Color _getFontColorFromString(SharedPreferences prefs) {
String fontColorString =
prefs.getString('fontColor') ?? AppConstants.fontColorHex;
// Remove any '#' symbol if present
fontColorString = fontColorString.replaceAll('#', '');
// Check if the string length is 6 (without alpha) or 8 (with alpha)
if (fontColorString.length == 6 || fontColorString.length == 8) {
// Add 'FF' as alpha if it's not present
if (fontColorString.length == 6) {
fontColorString = 'FF' + fontColorString;
}
// Parse the hex color string
Color fontColor = Color(int.parse(fontColorString, radix: 16));
return fontColor;
} //
else {
// Handle the case where the format is invalid
return Color(
int.parse(AppConstants.fontColorHex.replaceAll('0x', ''), radix: 16));
}
}
其他一些方法:
// Retrieve user preferences
Color fontColor = _getFontColorFromString(preferences);
实现 colorToHex 函数即可解决问题
String colorToHex(Color color) {
return '#${color.value.toRadixString(16).padLeft(8, '0')}';
}