Releases: fiftynotai/fifty_flutter_kit
fifty_storage v0.1.0
fifty_storage v0.1.0
Initial release of the secure storage package for the Fifty ecosystem.
Overview
fifty_storage provides a unified storage solution for Flutter apps, combining:
- Secure token storage for authentication credentials (via
flutter_secure_storage) - Preferences storage for app settings (via
get_storage)
Originally extracted from fifty_arch to enable standalone use.
Features
- TokenStorage contract - Abstract interface for secure credential storage, enabling custom implementations and easy testing
- SecureTokenStorage - Platform-native secure storage implementation
- Singleton pattern with in-memory caching
- Synchronous reads after initialization
- Platform secure storage (Keychain/Keystore)
- PreferencesStorage - Lightweight key-value storage for settings
- Configurable container name via
configure() - Theme mode, language code, and user ID support
- Clear all preferences utility
- Configurable container name via
- AppStorageService - Unified facade combining both storage types
- Single initialization for both storage types
- Simplified API for common storage operations
- Comprehensive test suite with mocking support
- Full documentation with usage examples
Platform Support
| Platform | Secure Storage Backend |
|---|---|
| iOS | Keychain |
| Android | Android Keystore (EncryptedSharedPreferences) |
| macOS | Keychain |
| Linux | libsecret |
| Windows | Windows Credentials |
Installation
Git Dependency:
dependencies:
fifty_storage:
git:
url: https://github.com/fiftynotai/fifty_eco_system.git
path: packages/fifty_storagePath Dependency (Monorepo):
dependencies:
fifty_storage:
path: ../fifty_storageQuick Start
import 'package:fifty_storage/fifty_storage.dart';
void main() async {
// Configure container name (optional)
PreferencesStorage.configure(containerName: 'my_app');
// Initialize all storage
await AppStorageService.instance.initialize();
// Use preferences
AppStorageService.instance.themeMode = 'dark';
// Use secure token storage
await AppStorageService.instance.setAccessToken('jwt_token');
final token = AppStorageService.instance.accessToken;
}Documentation
See README.md for complete documentation.
Ecosystem
Part of the Fifty Ecosystem:
- fifty_tokens, fifty_theme, fifty_ui, fifty_arch
- fifty_cache, fifty_audio_engine, fifty_speech_engine
- fifty_sentences_engine, fifty_map_engine
fifty_connectivity v0.1.0 - Initial Release
Overview
Network connectivity monitoring with intelligent reachability probing (DNS/HTTP). Part of the Fifty ecosystem.
This package provides real-time network connectivity detection with intelligent reachability verification, going beyond simple transport-layer checks to ensure true internet connectivity.
Key Features
Core Services
- ReachabilityService - DNS lookup and HTTP health check probing for true internet detection
- ConnectionViewModel - GetX-based reactive connection state management
- ConnectionActions - UX orchestration singleton for connection events
UI Widgets
- ConnectionOverlay - Overlay widget with animated status badge
- ConnectionHandler - Switcher widget that renders based on connection state
- ConnectivityCheckerSplash - Configurable splash screen with connectivity check
Configuration
- ConnectivityConfig - Centralized configuration for labels, navigation, and assets
- ConnectionBindings - GetX dependency injection with optional telemetry callbacks
Design Decisions
Decoupled Architecture
- Uses
ConnectivityConfig.navigateOffcallback for navigation (no RouteManager dependency) - Uses
ConnectivityConfig.logoBuilderfor splash logo (no AssetsManager dependency) - All labels externalized via static properties for i18n support
- Depends on
fifty_utilsforDuration.format()extension
FDL Compliance
- Kinetic Brutalism aesthetic with Orbital Command theme
- Uses
fifty_tokensandfifty_uifor consistent styling - Dark mode primary with crimson glow for offline states
Connectivity Types
| Type | Description |
|---|---|
wifi |
Connected via Wi-Fi |
mobileData |
Connected via cellular data |
connecting |
Probing connectivity |
disconnected |
No network transport |
noInternet |
Transport available but no internet reachability |
Dependencies
dependencies:
connectivity_plus: ^6.1.0
get: ^4.6.6
fifty_tokens: ^0.2.0
fifty_ui: ^0.5.0
fifty_utils: ^0.1.0Installation
dependencies:
fifty_connectivity:
path: ../fifty_connectivityQuick Start
void main() {
// Initialize bindings
ConnectionBindings().dependencies();
// Configure navigation
ConnectivityConfig.navigateOff = (route) async {
Get.offAllNamed(route);
};
runApp(
ConnectionOverlay(
child: GetMaterialApp(home: HomePage()),
),
);
}Test Coverage
- 10 unit tests for config, enums, and service instantiation
- Widget tests integrated into fifty_arch test suite (114+ passing)
Documentation
See the README for full API documentation and usage examples.
Part of the Fifty Ecosystem - 12 packages for building robust Flutter applications.
fifty_arch v0.7.0
fifty_arch v0.7.0
Connectivity module extracted to standalone fifty_connectivity package.
Changes
- Added
fifty_connectivityv0.1.0 as dependency - Removed 8 internal connectivity files (now in fifty_connectivity)
- Re-exports all connectivity APIs for backwards compatibility
- Pre-configured
ConnectivityConfig.navigateOffwithRouteManager.off()
Migration
No API changes required. If you were importing directly from modules/connections/, update to use package:fifty_connectivity/fifty_connectivity.dart.
Ecosystem Dependencies
| Package | Version | Purpose |
|---|---|---|
| fifty_tokens | v0.2.0 | Design tokens |
| fifty_theme | v0.1.0 | Theme system |
| fifty_ui | v0.5.0 | UI components |
| fifty_cache | v0.1.0 | HTTP caching |
| fifty_storage | v0.1.0 | Secure storage |
| fifty_utils | v0.1.0 | Utilities |
| fifty_connectivity | v0.1.0 | Network monitoring |
Test Results
All 114+ tests passing.
Full Changelog: fifty_arch-v0.6.0...fifty_arch-v0.7.0
fifty_speech_engine v0.1.0 - Initial Release
fifty_speech_engine v0.1.0
Unified speech interface for Flutter games and applications.
Overview
Fifty Speech Engine combines Text-to-Speech (TTS) and Speech-to-Text (STT) into a single, easy-to-use interface. Part of the Fifty Design Language ecosystem.
Highlights
- Unified API - Single engine for both TTS and STT
- Locale-aware - Configure once, works everywhere
- Queue Support - STT results queued to prevent overlap
- Continuous Listening - Dictation mode for longer input
- Callback-based - Clean result handling
Features
FiftySpeechEngine
Main unified controller combining TTS and STT capabilities.
TtsManager
- Flutter TTS integration
- Language and voice configuration
- Speech completion callbacks
- Dynamic language switching
SttManager
- Speech recognition with queue support
- Partial and final result handling
- Continuous listening mode (dictation)
- Error callback handling
SpeechResultModel
- Text and final flag properties
- Factory constructors for convenience
Platform Support
| Platform | TTS | STT | Notes |
|---|---|---|---|
| Android | Yes | Yes | Requires RECORD_AUDIO permission |
| iOS | Yes | Yes | Requires microphone usage description |
| macOS | Yes | Yes | Requires audio-input entitlement |
| Linux | Yes | Limited | STT requires libspeechd |
| Web | Yes | Yes | Browser-dependent |
Installation
Add to your pubspec.yaml:
dependencies:
fifty_speech_engine:
git:
url: https://github.com/fiftynotai/fifty_eco_system.git
path: packages/fifty_speech_engineQuick Start
import 'package:fifty_speech_engine/fifty_speech_engine.dart';
// 1. Create engine with locale
final engine = FiftySpeechEngine(
locale: Locale('en', 'US'),
onSttResult: (text) async => print('Heard: \$text'),
onSttError: (error) => print('Error: \$error'),
);
// 2. Initialize
await engine.initialize();
// 3. Speak text
await engine.speak('Hello! How can I help you?');
// 4. Listen for voice input
await engine.startListening(continuous: true);
// 5. Clean up
engine.dispose();Example App
The package includes a comprehensive demo application:
- Architecture: MVVM + Actions pattern (Kalvad)
- TTS Panel: Text input with speak/stop controls
- STT Panel: Continuous and single-phrase modes
- Languages: 9 supported languages
- Styling: FDL integration (fifty_ui, fifty_theme, fifty_tokens)
cd packages/fifty_speech_engine/example
flutter pub get
flutter runDocumentation
Ecosystem
| Package | Version | Description |
|---|---|---|
| fifty_tokens | v0.2.0 | Design tokens |
| fifty_theme | v0.1.0 | Theme provider |
| fifty_ui | v0.4.0 | Component library |
| fifty_audio_engine | v0.7.0 | Audio engine |
| fifty_speech_engine | v0.1.0 | Speech engine |
License
MIT License
Part of the Fifty Design Language ecosystem.
fifty_sentences_engine v0.1.0
fifty_sentences_engine v0.1.0
Initial Release - Queue-based sentence and dialogue processing engine for games and interactive applications.
Highlights
- SentenceEngine - Core queue-based processor with status tracking and flow control
- SentenceInterpreter - Instruction handler for read, write, ask, wait, navigate
- SentenceQueue - Optimized queue with front/back/ordered operations
- SafeSentenceWriter - Deduplication for idempotent rendering
- BaseSentenceModel - Abstract interface for custom sentence models
Example Application
Comprehensive example demonstrating:
- MVVM + Actions architecture
- FDL styling with fifty_tokens, fifty_theme, fifty_ui
- 19-sentence interactive demo story
- Queue visualization and flow control buttons
Platform Support
| Platform | Status |
|---|---|
| Android | Supported |
| iOS | Supported |
| macOS | Supported |
| Linux | Supported |
| Windows | Supported |
| Web | Supported |
Key Features
Queue-Based Processing
final engine = SentenceEngine(
onStatusChange: (status) => print('Status: $status'),
onSentencesChanged: (sentences) => updateUI(sentences),
);
engine.queue.pushBackAll(storyDialogue);
engine.process();Instruction Handling
final interpreter = SentenceInterpreter(
onRead: (s) async => await tts.speak(s.text),
onWrite: (s) async => displayDialogue(s.text),
onAsk: (s) async => showChoices(s.choices),
onWait: (s) async => waitForTap(),
onNavigate: (s) async => goToPhase(s.phase),
);Migration from erune_sentences_engine
If upgrading from erune_sentences_engine:
- Update package import to
fifty_sentences_engine - Replace
GetxControllerusage with callback parameters - Use
onSentencesChangedcallback instead ofRxList
Documentation
Full Changelog
See CHANGELOG.md
fifty_map_engine v0.1.0
fifty_map_engine v0.1.0
Flame-based interactive grid map rendering for Flutter games.
Features
- FiftyMapController - UI-friendly facade for map manipulation
- FiftyMapBuilder - FlameGame implementation with pan/zoom gestures
- FiftyMapWidget - Flutter widget embedding the map
- FiftyMapEntity - Data model for map entities with JSON serialization
- FiftyEntitySpawner - Factory for spawning components with custom type registration
- FiftyAssetLoader - Asset registration and bulk loading
- FiftyMapLoader - JSON map data loading and serialization
Components
- FiftyBaseComponent - Abstract base for all entity components
- FiftyStaticComponent - Static entities (furniture, doors)
- FiftyMovableComponent - Movable entities with animation support
- Movement:
moveTo,moveUp,moveDown,moveLeft,moveRight - Effects:
attack(bounce),die(fade out) - Sprite swap at runtime
- Movement:
- FiftyRoomComponent - Room containers with child spawning
- FiftyEventComponent - Event markers and overlays
- FiftyTextComponent - Text overlays
- FiftyRenderPriority - Z-ordering for render layers
Camera Controls
- Smooth pan with single finger drag
- Pinch-to-zoom anchored at midpoint (0.3x - 3.0x range)
- Programmatic zoom in/out/reset
- Center on all entities or specific entity
Platform Support
- Android
- iOS
- macOS
- Linux
- Windows
- Web
Example App
Includes FDL-styled example app with:
- MVVM + Actions architecture pattern
- Interactive map with pan/zoom controls
- Entity manipulation (add, remove, move)
- Camera controls (zoom in/out, center)
- D-pad movement controls
- Status bar with state indicators
Installation
```yaml
dependencies:
fifty_map_engine: ^0.1.0
```
Quick Start
```dart
import 'package:fifty_map_engine/fifty_map_engine.dart';
// Create controller
final controller = FiftyMapController();
// Use in widget
FiftyMapWidget(
controller: controller,
assets: ['assets/sprites/character.png'],
)
```
Full Changelog: See CHANGELOG.md
fifty_audio_engine v0.7.0
fifty_audio_engine v0.7.0
Initial release as part of the Fifty Design Language ecosystem.
Highlights
- Three-Channel Audio Architecture - BGM, SFX, and Voice channels with specialized optimizations
- Rebranded from arkada_sound_engine - Full ecosystem integration with fifty_tokens
- FiftyMotion Token Integration - Fade timing aligned with design system motion tokens
- Comprehensive Example App - MVVM + Actions architecture showcasing all features
- Multi-Platform Support - Android, iOS, macOS, Linux, Windows, Web
Features
FiftyAudioEngine
Main singleton controller for all audio operations.
BgmChannel
Background music with:
- Playlist management with shuffle
- Automatic crossfade 3 seconds before track end
- Persistent volume and state
SfxChannel
Sound effects with:
- Pooled playback (4 concurrent players per sound)
- 150ms throttle per group to prevent spam
- Low-latency player mode
VoiceActingChannel
Voice-over with:
- Automatic BGM ducking (fade to 30%)
- URL streaming support
- Ducking hooks for custom behavior
FadePreset
7 preset configurations aligned with FiftyMotion tokens:
fast(150ms) - UI feedbackpanel(300ms) - Panel revealsnormal(800ms) - Scene transitionscinematic(2000ms) - Dramatic momentsambient(3000ms) - Environmental changesbuildTension(1200ms) - Boss entrancessmoothExit(1000ms) - Scene fade outs
Example App
Comprehensive demo app demonstrating all audio engine capabilities:
- BGM Controls - Playlist, volume, mute, shuffle, track selection
- SFX Controls - Sound groups, single play, volume, rapid-fire demo
- Voice Controls - Playback with ducking toggle
- Global Controls - Master mute, fade presets (5 levels), stop all
- Real Audio - URL streaming with royalty-free samples
- iOS Compatible - MP3 audio sources for full platform support
- FDL Compliant - 12+ fifty_ui components integrated
Installation
dependencies:
fifty_audio_engine:
git:
url: https://github.com/fiftynotai/fifty_eco_system.git
path: packages/fifty_audio_engineQuick Start
import 'package:fifty_audio_engine/fifty_audio_engine.dart';
// Initialize
await FiftyAudioEngine.instance.initialize([
'assets/bgm/title.mp3',
'assets/bgm/gameplay.mp3',
]);
// Play BGM
FiftyAudioEngine.instance.bgm.playNext();
// Fire SFX
FiftyAudioEngine.instance.sfx.play('assets/sfx/click.wav');
// Play voice (auto-ducks BGM)
FiftyAudioEngine.instance.voice.playVoice('https://cdn.example.com/vo/greeting.mp3');Platform Support
| Platform | Status |
|---|---|
| Android | Supported (API 21+) |
| iOS | Supported (12.0+) |
| macOS | Supported (10.11+) |
| Linux | Supported |
| Windows | Supported |
| Web | Supported |
Documentation
- Package README - Full API reference
- Example App README - Architecture and setup
- CHANGELOG - Detailed changes
Briefs Completed
- BR-011 - fifty_audio_engine package (rebranded from arkada_sound_engine)
- BR-012 - Example app with MVVM + Actions architecture
fifty_ui v0.4.0 - Form Components
fifty_ui v0.4.0 - Form Components
The Fifty UI component library expands with powerful form components following the Fifty Design Language.
New Components
FiftySwitch
Kinetic toggle switch with brutalist aesthetic and snap animation.
- Snap animation - 150ms with overshoot spring effect
- Three sizes - Small (36x20), Medium (48x24), Large (60x32)
- FDL styling - Crimson thumb when active, HyperChrome when inactive
- Optional label - Text label support for accessibility
FiftySlider
Brutalist range selector for value input.
- Thin track - Clean design with crimson active fill
- Square thumb - Brutalist aesthetic with rounded corners
- Value label - Optional display on hover/drag
- Discrete divisions - Support for stepped values
FiftyDropdown
Terminal-styled dropdown selector.
- TextField appearance - Looks like FiftyTextField with chevron indicator
- Slide animation - Smooth slide-down for menu expansion
- Crimson highlight - Hover effect on menu items
- Check mark - Visual indicator for selected item
- Icon support - Optional icons for dropdown items
Test Coverage
- 50 new widget tests for form components
- All components tested for accessibility
- Animation and interaction tests included
Example App
The example gallery has been updated with form component demos showcasing all variants and configurations.
Full Changelog: CHANGELOG.md
Previous Release: v0.3.0
fifty_ui v0.3.0
fifty_ui v0.3.0
Component enhancements release delivering FDL-compliant UI improvements.
Features
FiftyButton Enhancements
isGlitch- RGB chromatic aberration effect on hovershape- Choose betweensharp(4px radius) orpill(100px radius)
FiftyTextField Enhancements
borderStyle- Control border:full,bottom, ornoneprefixStyle- Terminal prefix:chevron(">"),comment("//"),customcursorStyle- Cursor appearance:line,block, orunderscore
FiftyCard Enhancements
hasTexture- Halftone dot pattern overlayhoverScale- Configurable scale factor on hover
FiftyBadge Enhancements
FiftyBadge.tech()- Gray tech labelsFiftyBadge.status()- Green status with glowFiftyBadge.ai()- IgrisGreen AI indicator
FiftyLoadingIndicator Enhancements
FiftyLoadingStyle.sequence- Cycle through text sequencessequences- Custom sequence list
Accessibility
- All components respect
MediaQuery.disableAnimations
Quality
- 124 tests passing
- Zero analyzer warnings
- Full FDL compliance
Installation
dependencies:
fifty_ui:
git:
url: https://github.com/fiftynotai/fifty_eco_system.git
path: packages/fifty_ui
ref: fifty_ui-v0.3.0See CHANGELOG.md for full details.
fifty_theme v0.1.0
fifty_theme v0.1.0
Release Date: 2025-12-25
Transform design tokens into production-ready Flutter themes.
Highlights
fifty_theme is the theming layer of the Fifty Design Language (FDL) ecosystem. It converts fifty_tokens into complete Material 3 ThemeData, ready for use in any Flutter application.
Key Features
- Complete Material 3 Theme - Dark and light modes with full component coverage
- 25+ Component Themes - Buttons, cards, inputs, navigation, and more
- Zero Elevation Design - No drop shadows; uses crimson glow for focus states
- Binary Typography - Monument Extended (Hype) + JetBrains Mono (Logic)
- Custom Theme Extension - Access Fifty-specific colors, glows, and motion tokens
- OLED Optimized - True black backgrounds for power efficiency
Quick Start
import 'package:fifty_theme/fifty_theme.dart';
MaterialApp(
theme: FiftyTheme.dark(), // Dark mode is PRIMARY
home: MyApp(),
);What's Included
Core Classes
| Class | Purpose |
|---|---|
FiftyTheme |
Main entry point - dark() and light() factory methods |
FiftyColorScheme |
Maps fifty_tokens colors to Material ColorScheme |
FiftyTextTheme |
Binary type system with Hype and Logic fonts |
FiftyComponentThemes |
25+ pre-configured component themes |
FiftyThemeExtension |
Custom properties (igrisGreen, glows, motion) |
Theme Extension Properties
Access via Theme.of(context).extension<FiftyThemeExtension>():
- Colors:
igrisGreen,success,warning - Glows:
focusGlow,strongFocusGlow - Durations:
instant,fast,compiling,systemLoad - Curves:
standardCurve,enterCurve,exitCurve
Design Philosophy
The theme follows Fifty Design Language (FDL) principles:
- Dark mode is PRIMARY - Not an afterthought, the canonical experience
- No shadows, only glow - Crimson glow replaces drop shadows
- Compact density - Information-dense bento-grid layouts
- Zero elevation - Flat surfaces with border outlines
- Kinetic typography - Bold headlines, functional body text
Test Coverage
- 109 tests passing
- All components verified
- Both dark and light modes tested
- Theme extension interpolation tested
Dependencies
flutterSDK >=3.0.0fifty_tokens^0.2.0
Font Requirements
Ensure these fonts are configured in your pubspec.yaml:
- Monument Extended (for headlines)
- JetBrains Mono (for body text)
Installation Note
This package currently uses a path dependency for fifty_tokens (monorepo development). For standalone use:
# Option 1: Git dependency
dependencies:
fifty_theme:
git:
url: https://github.com/fifty-dev/fifty_eco_system.git
path: packages/fifty_theme
# Option 2: After pub.dev publishing
dependencies:
fifty_theme: ^0.1.0Related Packages
| Package | Status | Description |
|---|---|---|
| fifty_tokens | v0.2.0 | Design tokens (foundation) |
| fifty_theme | v0.1.0 | Flutter theming (this release) |
| fifty_ui | Coming soon | Component library |
Full Changelog
See CHANGELOG.md for complete details.
Part of the fifty.dev ecosystem
The interface is the machine. Make it feel alive.