Skip to content

Instantly share code, notes, and snippets.

@leoafarias
Last active August 7, 2024 17:00
Show Gist options
  • Save leoafarias/c4a6edb99fc831652cb4dca238a062f4 to your computer and use it in GitHub Desktop.
Save leoafarias/c4a6edb99fc831652cb4dca238a062f4 to your computer and use it in GitHub Desktop.
class OnPlatformVariant extends ContextVariant {
final TargetPlatform platform;
const OnPlatformVariant(this.platform);
@override
bool when(BuildContext context) {
return defaultTargetPlatform == platform;
}
@override
List<Object?> get props => [platform];
@override
Object get mergeKey => '$runtimeType.${platform.name}';
}
class OnWebVariant extends ContextVariant {
const OnWebVariant();
@override
bool when(_) => kIsWeb;
}
extension OnContextVariantUtilityX on OnContextVariantUtility {
OnPlatformVariant onPlatform(TargetPlatform platform) {
return OnPlatformVariant(platform);
}
OnPlatformVariant get android => OnPlatformVariant(TargetPlatform.android);
OnPlatformVariant get fuchsia => OnPlatformVariant(TargetPlatform.fuchsia);
OnPlatformVariant get ios => OnPlatformVariant(TargetPlatform.iOS);
OnPlatformVariant get linux => OnPlatformVariant(TargetPlatform.linux);
OnPlatformVariant get macos => OnPlatformVariant(TargetPlatform.macOS);
OnPlatformVariant get windows => OnPlatformVariant(TargetPlatform.windows);
OnWebVariant get web => OnWebVariant();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment