Skip to content

Instantly share code, notes, and snippets.

@HayesGordon
Created April 16, 2024 09:25
Show Gist options
  • Save HayesGordon/5d37d3fb26f54b2c231760c2c8685963 to your computer and use it in GitHub Desktop.
Save HayesGordon/5d37d3fb26f54b2c231760c2c8685963 to your computer and use it in GitHub Desktop.
Example extensions on the Rive File asset type in Flutter.
import 'package:rive/src/rive_core/assets/file_asset.dart';
export 'package:rive/src/generated/artboard_base.dart';
extension FileAssetExtension on FileAsset {
Extension get extension => _getExtension(fileExtension);
Type get type => _getType(extension);
}
Extension _getExtension(String ext) {
switch (ext) {
case 'png':
return Extension.png;
case 'jpeg':
return Extension.jpeg;
case 'webp':
return Extension.webp;
case 'otf':
return Extension.otf;
case 'ttf':
return Extension.ttf;
case 'flac':
return Extension.flac;
case 'mp3':
return Extension.mp3;
case 'wav':
return Extension.wav;
}
return Extension.unknown;
}
Type _getType(Extension ext) {
switch (ext) {
case Extension.png:
case Extension.jpeg:
case Extension.webp:
return Type.image;
case Extension.otf:
case Extension.ttf:
return Type.font;
case Extension.flac:
case Extension.mp3:
case Extension.wav:
return Type.audio;
case Extension.unknown:
return Type.unknown;
}
}
enum Extension {
otf,
ttf,
jpeg,
png,
webp,
flac,
mp3,
wav,
unknown,
}
enum Type {
font,
image,
audio,
unknown,
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment