Multi-Platform Support Technology
This page introduces the technical background behind how BrainCheck keeps its core learning flow consistent across iOS, Android, macOS, and Windows. It focuses on Flutter, Google's open-source UI framework.
Why Multi-Platform Support Matters
Language learning happens repeatedly in everyday life. It is natural to study on a phone during a commute and on a desktop at home. If the learning experience changes too much from device to device, the learning flow breaks and users can become confused.
BrainCheck aims to provide consistent screen structure, interaction patterns, and learning data across iOS, Android, macOS, and Windows wherever possible.
What Is Flutter?
Flutter is a UI framework developed by Google and released as open source under the BSD 3-Clause license. Most UI and application logic can be shared in a single codebase, while platform-specific settings and release configuration are managed separately. BrainCheck currently prioritizes iOS, Android, macOS, and Windows; web and Linux are outside the current app support scope.
Core Characteristics
Single Codebase, Multiple Platforms
Traditional app development usually requires separate iOS code in Swift or Objective-C and Android code in Kotlin or Java. Desktop support for Windows and macOS adds even more code. Flutter generates apps for multiple platforms from one Dart codebase.
Own Rendering Model
Instead of primarily relying on each platform's native UI components, Flutter draws the interface itself using renderers such as Skia inside its engine. The renderer can vary by platform and version.
This approach helps deliver a more consistent UI across platforms, though subtle differences can still appear because of font rendering, input methods, and OS settings. Flutter can also integrate with platform-specific native features or UI when needed.
Widget-Based UI
Most Flutter UI is built from widgets. Buttons, text, layouts, and animations are all expressed as combinations of widgets. Widgets form a tree, and when state changes, Flutter rebuilds the relevant widgets and optimizes rendering around the parts that need to be redrawn.
Hot Reload
During development, Hot Reload makes many changes visible quickly. Depending on the change, Hot Restart or a full rebuild may still be required.
Flutter Architecture
Flutter uses a layered architecture.
| Layer | Role | Implementation language |
|---|---|---|
| Framework | App development APIs such as widgets, layout, animation, and gestures | Dart |
| Engine | Dart runtime, rendering pipeline, text rendering, I/O, and other core runtime features | Mainly C++ |
| Embedder | Platform entry point, event loop, and native integration | Platform-specific languages such as Swift, Kotlin, and C++ |
Developers usually work at the Framework layer, while the Engine and Embedder abstract many platform differences. Some features, such as permissions, file access, notifications, and in-app purchases, still require platform-specific settings or native integration.
Adaptive Design
Even with one codebase, it is important to respect the conventions of each platform. Flutter provides tools for this:
- Material Design and Cupertino widgets: Flutter provides both Android-style Material components and iOS-style Cupertino components. Adaptive design can be applied selectively depending on product intent.
- Responsive layout: Flutter provides tools for layouts that adapt from small phone screens to wide desktop screens.
- Platform channels: When platform-specific features such as camera, file system, or notifications are needed, platform channels connect Flutter code with native code.
Perfectly identical behavior on every platform is difficult. Keyboard and mouse input, window resizing, multi-window behavior, file permissions, system fonts, and accessibility settings can all affect behavior and presentation.
BrainCheck App Supported Platforms
| Platform | BrainCheck app support |
|---|---|
| iOS | Supported |
| Android | Supported |
| macOS | Planned |
| Windows | Planned |
For Flutter's platform support policy, see the official Supported Platforms documentation. BrainCheck's minimum OS versions are announced through each store and release notes.
How BrainCheck Applies Flutter
BrainCheck uses Flutter to develop iOS, Android, macOS, and Windows apps from one codebase.
- Consistent learning flow: Provides similar screen structure and interactions across devices wherever possible.
- Learning data sync: Designed to sync learning records across signed-in devices. Network conditions can delay or temporarily prevent some items from appearing immediately.
- Faster development cycle: Shared code speeds up feature improvements and bug fixes. Release timing can still differ because each platform has its own review and distribution policy.
Sources: Flutter documentation - Building user interfaces · Flutter architectural overview · Flutter supported platforms · Flutter GitHub