getBuildMode method
Implementation
WidgetBuildMode getBuildMode(BaseParam? baseParam) {
WidgetBuildMode _widgetBuildMode = WidgetBuildMode.disabled;
if (baseParam != null) {
bool _disabled = false;
if (isCupertinoMode) {
if (baseParam.forceUseMaterial) {
/// Force use Material mode
_widgetBuildMode = WidgetBuildMode.forceUseMaterial;
} else {
/// Use Cupertino mode
_widgetBuildMode = WidgetBuildMode.cupertino;
}
} else if (isMaterialMode) {
if (baseParam.forceUseCupertino) {
/// Force use Cupertino mode
_widgetBuildMode = WidgetBuildMode.forceUseCupertino;
} else {
/// Use Material mode
_widgetBuildMode = WidgetBuildMode.material;
}
} else {
assert(true, 'Only support Cupertino mode and Materila mode.');
}
if (kIsWeb && baseParam.disabledOnWeb) {
_widgetBuildMode = WidgetBuildMode.disabled;
} else {
switch (defaultTargetPlatform) {
case TargetPlatform.android:
if (baseParam.disabledOnAndroid) {
_disabled = true;
}
break;
case TargetPlatform.fuchsia:
if (baseParam.disabledOnFuchsia) {
_disabled = true;
}
break;
case TargetPlatform.iOS:
if (baseParam.disabledOnIOS) {
_disabled = true;
}
break;
case TargetPlatform.linux:
if (baseParam.disabledOnLinux) {
_disabled = true;
}
break;
case TargetPlatform.macOS:
if (baseParam.disabledOnMacOS) {
_disabled = true;
}
break;
case TargetPlatform.windows:
if (baseParam.disabledOnWindows) {
_disabled = true;
}
break;
}
// Check disabledOnOthers after the switch
if (!_disabled && baseParam.disabledOnOthers) {
// Only apply disabledOnOthers if platform doesn't match any specific case
final isKnownPlatform = defaultTargetPlatform == TargetPlatform.android ||
defaultTargetPlatform == TargetPlatform.fuchsia ||
defaultTargetPlatform == TargetPlatform.iOS ||
defaultTargetPlatform == TargetPlatform.linux ||
defaultTargetPlatform == TargetPlatform.macOS ||
defaultTargetPlatform == TargetPlatform.windows;
if (!isKnownPlatform) {
_disabled = true;
}
}
}
if (_disabled) {
_widgetBuildMode = WidgetBuildMode.disabled;
}
} else {
if (isCupertinoMode) {
_widgetBuildMode = WidgetBuildMode.cupertino;
} else if (isMaterialMode) {
_widgetBuildMode = WidgetBuildMode.material;
} else {
assert(true, 'Only support Cupertino mode and Materila mode.');
}
}
return _widgetBuildMode;
}