Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[FlutterNinjas]Adapting Flutter App UX for User...

[FlutterNinjas]Adapting Flutter App UX for Users Across the World

This is the slide, "Adapting Flutter App UX for Users Across the World" at Flutter Ninjas 2025
#FlutterNinjas #flutter #flutterjp #flutterdev

Avatar for Kenichi Kambara

Kenichi Kambara

May 29, 2025
Tweet

More Decks by Kenichi Kambara

Other Decks in Technology

Transcript

  1. •Mobile App Development •Speeches (e.g. 20 Int’l/100+ Domestic) •Writings (e.g.

    10 Dev/Edu Books) •[Of fi cial] Evangelist at NTT TechnoCross •[Private] iplatform.org About me Kenichi Kambara (X:@korodroid) NEW
  2. Agenda •My Motivation •Intro to the World of Languages •Supporting

    more Languages on Flutter Apps •AI-Driven Localization Tips & Tools
  3. RTL (Right To Left) Speakers  • Arabic: 370 million

    speakers/23 countries • Persian: 81 million speakers • Urdu: 70 million speakers • Hebrew: 8 million speakers • and some more… LingoHub: https://lingohub.com/academy/best-practices/rtl-language-list
  4. Supporting more Languages on Flutter  1. Understanding RTL Basics

    2. Getting Started with i18n 3. Testing Before Code Changes 4. Deep Dive into Implementation [+AI-Driven Localization Tips & Tools]
  5. Flutter i18n packages  • fl utter_localizations (Inspired by Flutter

    SDK) •slang (Of fi cial successor of “fast_i18n”) • fl utter_translate •easy_localization •getx (also known for its state management) •And more…
  6. Flutter i18n packages  • fl utter_localizations (Inspired by Flutter

    SDK) •slang (Of fi cial successor of “fast_i18n”) • fl utter_translate •easy_localization •getx (also famous as State Management ) •And more…
  7. Setting Up { "greeting": "Hello" } Create some new fi

    les lib/l10n/app_en.arb { "greeting": "͜Μʹͪ͸" } { "greeting": "ﺎً ﺒﺣﺮﻣ" } lib/l10n/app_ja.arb lib/l10n/app_ar.arb > fl utter pub get Automatically Generated… 
  8. Deep Dive 2 (Layout)  on LTR on RTL Row(

    mainAxisAlignment: MainAxisAlignment.start, children: [ BlueArea(), GreyArea(), ], ), Row( mainAxisAlignment: MainAxisAlignment.end, children: [ BlueArea(), GreyArea(), ], ),
  9. Deep Dive 3 (Text)  Column( children: [ Text( “Text1",

    ), Text( “Text2", ), ], ), on LTR on RTL
  10. Deep Dive 3 (Text)  Column( children: [ Text( “TextAlign.left",

    textAlign: TextAlign.left, ), Text( "TextAlign.right", textAlign: TextAlign.right, ), ], ), on LTR on RTL
  11. Deep Dive 4 (Combined)  on LTR on RTL •Icon

    •Layout matchTextDirection: true for reversing a Widget The order of each Widget is automatically reversed in a Row
  12. Mobile Apps Development with Generative AI  Natural language prompts

    for: •Translation •UI/UX strategy •Cultural insights $POWFSTBUJPOBM"* 🧠Gemini 🧠ChatGPT 🧠Claude *%&*OUFHSBUFE"* 🛠Cursor 🛠Cline 🛠GitHub Copilot Embedded in your IDE for: •Refactoring •Layout fi xing •Multilingual bug checking
  13. Examples of Language Resources  // English Resource "en": {

    // Top Screen "appName": "SekaiPhone Pro", "modeTalkSpeech": "Talk Mode\n(Speech)", "modeTalkText": "Talk Mode\n(Text)", "modePhone": "Phone Mode", "modeCamera": "Camera Mode", // Hoge Screen // … },
  14. Use Case 2: Using IDE-Integrated AI  Initial project *OTUBMMJOHUIFJOQBDLBHF

    1SFQBSJOHJOSFTPVSDFT 3FGBDUPSJOHUIFDPEF BOENPSF