Flutter - 将对象转换为可编码对象失败

问题描述 投票:0回答:1

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);
flutter dart type-conversion
1个回答
0
投票

实现 colorToHex 函数即可解决问题

String colorToHex(Color color) {
  return '#${color.value.toRadixString(16).padLeft(8, '0')}';
}
© www.soinside.com 2019 - 2024. All rights reserved.