valueOf method

dynamic valueOf(
  1. String key,
  2. dynamic value
)

Implementation

dynamic valueOf(String key, dynamic value) {
  Map<String, dynamic>? _map;
  // 先根据平台取值
  if (kIsWeb && web != null) {
    _map = web;
  } else {
    switch (defaultTargetPlatform) {
      case TargetPlatform.android:
        _map = android;
        break;
      case TargetPlatform.fuchsia:
        _map = fuchsia;
        break;
      case TargetPlatform.iOS:
        _map = iOS;
        break;
      case TargetPlatform.linux:
        _map = linux;
        break;
      case TargetPlatform.macOS:
        _map = macOS;
        break;
      case TargetPlatform.windows:
        _map = windows;
        break;
    }
    _map ??= others; // fallback to others if no platform match
    // 再根据模式取值
    switch (currentBaseMode) {
      case BaseMode.cupertino:
        _map ??= forceUseMaterial ? material : cupertino;
        break;
      case BaseMode.material:
        _map ??= forceUseCupertino ? cupertino : material;
        break;
    }
  }

  dynamic result = _map != null ? _map[key] ?? value : value;

  // Special handling for backgroundColor in forceUseMaterial mode
  // Return null to let BaseScaffold use theme's scaffold background color
  if (key == 'backgroundColor' && result == null && forceUseMaterial) {
    return null; // This allows BaseScaffold to use Theme.of(context).scaffoldBackgroundColor
  }

  return result;
}