Skip to content

Repository files navigation

Pronunciation Flutter App

An educational word-pronunciation game that makes practicing English more fun! Tap the mic, say the four displayed words aloud, and watch the robot walk as you get them right. Built with a modern Flutter 3 stack.


Features

  • 🎙️ Speech-to-Text — real-time recognition using the speech_to_text package
  • 🤖 Rive Animations — animated background and robot that reacts to your voice
  • 🧠 BLoC Architecture (v8) — clean event-driven state management with flutter_bloc
  • ❄️ Freezed — immutable, code-generated events and states
  • 🎮 Auto-advance game loop — all four words correct → 800 ms success pause → new set loads automatically
  • 🌙 Null-safe Dart 3 — fully sound null-safe codebase
  • 🎨 Beautiful dark UI — glassmorphism-style word cards with animated Rive backgrounds

Platforms

Platform Status
Android ✅ Supported (minSdk 21, targetSdk 36)
iOS ✅ Supported (iOS 13.0+)
Web ✅ Supported

Tech Stack

Layer Package
State management flutter_bloc ^8.1.6
Immutable models freezed_annotation ^2.4.4 + freezed ^2.5.7
Animations rive ^0.13.15
Speech recognition speech_to_text ^6.6.2
Word list english_words ^4.0.0
Code generation build_runner ^2.4.9

Requirements

  • Flutter 3.10+ (tested on 3.24.4)
  • Dart 3.0+
  • Android Studio / Xcode for device builds
  • Java 17 (required for Android Gradle 8.7 build)

Getting Started

# 1. Clone the repository
git clone https://github.com/j-j-gajjar/pronunciation_flutter_app.git
cd pronunciation_flutter_app

# 2. Install dependencies
flutter pub get

# 3. Generate Freezed & JSON code (REQUIRED — do this before running)
dart run build_runner build --delete-conflicting-outputs

# 4. (Optional) Generate app icons
dart run flutter_launcher_icons

# 5. (Optional) Generate native splash screen
dart run flutter_native_splash:create

# 6. Run the app
flutter run

iOS — additional step

cd ios && pod install && cd ..
flutter run -d <your-ios-device>

How to Play

  1. Launch the app — four English words appear on screen.
  2. Tap the mic button 🎤 to start listening.
  3. Say each of the four words aloud (in any order).
  4. Words turn white as they are recognised correctly.
  5. Once all four are found, the game automatically loads a new set after a brief pause.
  6. Tap Skip at any time to jump to a new set of words.

Project Structure

lib/
├── features/
│   └── main_screen/
│       ├── blocs/
│       │   ├── main_screen_bloc.dart      # BLoC logic & game engine
│       │   ├── main_screen_event.dart     # All events (Freezed)
│       │   └── main_screen_state.dart     # All states (Freezed)
│       └── main_screen.dart              # Barrel export
├── ui/
│   └── main_screen/
│       ├── view/
│       │   └── main_screen_view.dart     # Screen + _ListenedBody widget
│       └── widget/
│           ├── button_widget.dart
│           ├── display_word_widget.dart
│           ├── text_widget.dart
│           └── two_word_widget.dart
├── utils/
│   ├── color_const.dart
│   ├── default_text_const.dart
│   ├── rive_file_const.dart
│   └── utils.dart                        # Barrel export
└── main.dart

References


Screenshots

 


Contributing

Pull requests are welcome! It usually takes 24–48 hours to respond to any issue or request.