Brain Check
KO

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:

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.

  1. Consistent learning flow: Provides similar screen structure and interactions across devices wherever possible.
  2. Learning data sync: Designed to sync learning records across signed-in devices. Network conditions can delay or temporarily prevent some items from appearing immediately.
  3. 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