Skip to content

TextField should support typing accented words with external keyboard #59541

Description

@jerrywell

Steps to Reproduce

import 'package:flutter/material.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: TextField(
          autofocus: true
        ),
      )
    );
  }
}
  1. run above sample in iOS
  2. change keyboard input language to Spanish (Spain)
  3. type [
  4. type a

Expected results: à

Actual results: `à

we tested it on iOS/Android with external keyboard. both native behaviors showing the accented a without additional prefix `. in Flutter, it shows two words ` and à.

flutter doctor -v
$ flutter doctor -v
[✓] Flutter (Channel stable, v1.17.0-4.0.pre.7, on Mac OS X 10.15.5 19F96,
    locale en)
    • Flutter version 1.17.0-4.0.pre.7 at
      /Users/jerrychen/Documents/project/flutter
    • Framework revision b041144f83 (12 days ago), 2020-06-04 09:26:11 -0700
    • Engine revision ee76268252
    • Dart version 2.8.4

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/jerrychen/Library/Android/sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      1.8.0_242-release-1644-b3-6222593)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.5)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.5, Build version 11E608c
    • CocoaPods version 1.9.1
[✓] Connected device (1 available)
    • iPhone 11 Pro • B39B2840-47A2-4280-A589-D86B4AC8A69F • ios •
      com.apple.CoreSimulator.SimRuntime.iOS-13-5 (simulator)

Activity

  1. changed the title [-]TextField didn't support typing accent words with external keyboard[/-] [+]TextField should support typing accented words with external keyboard[/+] on Jun 16, 2020
  2. added
    a: internationalizationSupporting other languages or locales. (aka i18n)
    a: text inputEntering text in a text field or keyboard related problems
    engineflutter/engine related. See also e: labels.
    p: material_uimaterial_ui package in flutter/packages
    frameworkflutter/packages/flutter repository. See also f: labels.
    on Jun 16, 2020
  3. markusaksli-nc commented on Jul 21, 2020

    @markusaksli-nc
    Contributor

    Reproducible on the latest master 1.21.0-2.0.pre.83.

    flutter doctor -v
    [√] Flutter (Channel master, 1.21.0-2.0.pre.83, on Microsoft Windows [Version 10.0.18362.900], locale et-EE)
       • Flutter version 1.21.0-2.0.pre.83 at C:\Development\flutter_master
       • Framework revision 9e658bc3d5 (8 hours ago), 2020-07-21 03:56:07 +0200
       • Engine revision dcc9a4048d
       • Dart version 2.9.0 (build 2.9.0-21.0.dev 9dca49e71e)
    
    
    [√] Android toolchain - develop for Android devices (Android SDK version 30.0.0)
       • Android SDK at C:\Users\Isa\AppData\Local\Android\sdk
       • Platform android-30, build-tools 30.0.0
       • Java binary at: C:\Users\Isa\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\193.6626763\jre\bin\java
       • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
       • All Android licenses accepted.
    
    [√] Chrome - develop for the web
       • Chrome at C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
    
    [√] Visual Studio - develop for Windows (Visual Studio Community 2019 16.6.4)
       • Visual Studio at C:\Program Files (x86)\Microsoft Visual Studio\2019\Community
       • Visual Studio Community 2019 version 16.6.30309.148
       • Windows 10 SDK version 10.0.18362.0
    
    [√] Android Studio (version 4.0)
       • Android Studio at C:\Users\Isa\AppData\Local\JetBrains\Toolbox\apps\AndroidStudio\ch-0\193.6626763
       • Flutter plugin version 47.1.2
       • Dart plugin version 193.7361
       • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b01)
    
    [√] VS Code (version 1.47.2)
       • VS Code at C:\Users\Isa\AppData\Local\Programs\Microsoft VS Code
       • Flutter extension version 3.12.2
    
    [√] Connected device (5 available)
       • SM G950F (mobile)       • ce12171c51cc001c03 • android-arm64  • Android 9 (API 28)
       • sdk gphone x86 (mobile) • emulator-5554      • android-x86    • Android 11 (API 30) (emulator)
       • Windows (desktop)       • windows            • windows-x64    • Microsoft Windows [Version 10.0.18362.900]
       • Web Server (web)        • web-server         • web-javascript • Flutter Tools
       • Chrome (web)            • chrome             • web-javascript • Google Chrome 84.0.4147.89
    
    • No issues found!
    
  4. added
    P2Important issues not at the top of the work list
    on Dec 11, 2020
  5. deepak786 commented on Apr 7, 2022

    @deepak786

    It seems that we also have the same issue with the Physical keyboard having an input language as Portuguese (Brazil).

    1. type ˜
    2. type a
    3. It should become ã but it is not.

    Screen Shot 2022-04-07 at 5 33 09 PM

    Device:
    Screenshot_20220223-133506_Chrome

  6. frantovar commented on Oct 19, 2022

    @frantovar

    Any updates on this problem? I'm not be able to use accents when I connect an external keyboard to my device. So for example, when try to achieve a work like camión I get cami´on.

  7. pr02nl commented on Mar 7, 2023

    @pr02nl

    I have the same problem with Flutter (Channel stable, 3.7.6, on Microsoft Windows [version 10.0.19044.2604], locale pt-BR).
    I develop on Windows, but I compile for IOS and test on an IOS with an external keyboard.

  8. huycozy commented on Mar 21, 2023

    @huycozy
    Member

    This issue is reproducible on the latest stable and master channels.

    Verified with Vietnamese by two methods:

    Using scrcpy

    • Input: a + s
    • Expected result: á
    • Actual result: a´a

    Connect with physical keyboard via Bluetooth (switching to Vietnamese language)

    • Input: a + s
    • Expected result: á
    • Actual result: as
    Demo

    Screenshot 2023-03-21 at 16 29 40

    flutter doctor -v (stable and master)
    [✓] Flutter (Channel stable, 3.7.7, on macOS 13.0.1 22A400 darwin-x64, locale en-EE)
        • Flutter version 3.7.7 on channel stable at /Users/huynq/Documents/GitHub/flutter
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision 2ad6cd72c0 (10 hours ago), 2023-03-08 09:41:59 -0800
        • Engine revision 1837b5be5f
        • Dart version 2.19.4
        • DevTools version 2.20.1
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
        • Android SDK at /Users/huynq/Library/Android/sdk
        • Platform android-33, build-tools 31.0.0
        • ANDROID_HOME = /Users/huynq/Library/Android/sdk
        • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 14.1)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Build 14B47b
        • CocoaPods version 1.11.3
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [!] Android Studio
        • Android Studio at /Applications/Android Studio Preview.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        ✗ Unable to find bundled Java version.
        • Try updating or re-installing Android Studio.
    
    [✓] Android Studio (version 2022.1)
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    
    [✓] IntelliJ IDEA Community Edition (version 2022.1.1)
        • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
    
    [✓] VS Code (version 1.76.0)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.60.0
    
    [✓] Connected device (2 available)
        • macOS (desktop) • macos  • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
        • Chrome (web)    • chrome • web-javascript • Google Chrome 110.0.5481.177
    
    [✓] HTTP Host Availability
        • All required HTTP hosts are available
    
    ! Doctor found issues in 1 category.
    [!] Flutter (Channel master, 3.9.0-12.0.pre.17, on macOS 13.0.1 22A400 darwin-x64, locale en-VN)
        • Flutter version 3.9.0-12.0.pre.17 on channel master at /Users/huynq/Documents/GitHub/flutter_master
        ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
        ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
        • Upstream repository https://github.com/flutter/flutter.git
        • Framework revision 6b7c60d69a (2 hours ago), 2023-03-20 18:08:51 -0700
        • Engine revision ea6ed14b4e
        • Dart version 3.0.0 (build 3.0.0-345.0.dev)
        • DevTools version 2.22.2
        • If those were intentional, you can disregard the above warnings; however it is recommended to use "git" directly to perform update checks and upgrades.
    
    [✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
        • Android SDK at /Users/huynq/Library/Android/sdk
        • Platform android-33, build-tools 31.0.0
        • ANDROID_HOME = /Users/huynq/Library/Android/sdk
        • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
        • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
        • All Android licenses accepted.
    
    [✓] Xcode - develop for iOS and macOS (Xcode 14.1)
        • Xcode at /Applications/Xcode.app/Contents/Developer
        • Build 14B47b
        • CocoaPods version 1.11.3
    
    [✓] Chrome - develop for the web
        • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome
    
    [✓] Android Studio (version 2022.1)
        • Android Studio at /Applications/Android Studio.app/Contents
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
        • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    
    [✓] IntelliJ IDEA Community Edition (version 2022.1.1)
        • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
        • Flutter plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/9212-flutter
        • Dart plugin can be installed from:
          🔨 https://plugins.jetbrains.com/plugin/6351-dart
    
    [✓] VS Code (version 1.76.2)
        • VS Code at /Applications/Visual Studio Code.app/Contents
        • Flutter extension version 3.60.0
    
    [✓] Connected device (2 available)
        • macOS (desktop) • macos  • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
        • Chrome (web)    • chrome • web-javascript • Google Chrome 111.0.5563.64
    
    [✓] Network resources
        • All expected network resources are available.
    
    ! Doctor found issues in 1 category.
  9. 52 remaining items

  10. added
    platform-macosBuilding on or for macOS specifically
    platform-linuxBuilding on or for Linux specifically
    and removed
    team-designOwned by Design Languages team
    triaged-designTriaged by Design Languages team
    on Jun 2, 2026
  11. loic-sharma commented on Jun 4, 2026

    @loic-sharma
    Member

    Just so it's not lost, here were my notes on the iOS issue that was deduplicated to this one: #146486 (comment)

    On iOS, pressing ALT-u + u on an external keyboard should produce ü. However, it produces ¨ü:

    1. I press ALT-u
    2. This calls [FlutterTextInputView setMarkedText:selectedRange:]
    3. The framework receives a TextInputClient.updateEditingState message with value ¨
    4. I press u
    5. This calls [FlutterTextInputView insertText:]
    6. The framework receives a TextInputClient.updateEditingState message with value ¨ü

    Apple's Handling text interactions in custom keyboards docs state:

    Calling setMarkedText selects the text specified by range. Subsequent insertions replace the characters selected in the range. In the example above, a space with a combining acute accent is shown. If the next character input by the user is an a, you could then insert a combined á.

    This indicates that [FlutterTextInputView insertText:] needs to be updated to replace the characters that were selected by [FlutterTextInputView setMarkedText:selectedRange:]'s range.

  12. LongCatIsLooong commented on Jun 4, 2026

    @LongCatIsLooong
    Contributor

    Removing p2 label so we can take a look at this again next triage, since the fix is straightforward and the bug affects many users.

  13. removed
    P2Important issues not at the top of the work list
    frameworkflutter/packages/flutter repository. See also f: labels.
    on Jun 4, 2026
  14. added a commit that references this issue on Sep 4, 2026
    bf705aa
  15. github-actions commented on Sep 18, 2026

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  16. locked as resolved and limited conversation to collaborators on Sep 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

a: internationalizationSupporting other languages or locales. (aka i18n)a: text inputEntering text in a text field or keyboard related problemsengineflutter/engine related. See also e: labels.found in release: 3.24Found to occur in 3.24found in release: 3.25Found to occur in 3.25found in release: 3.7Found to occur in 3.7found in release: 3.9Found to occur in 3.9has reproducible stepsThe issue has been confirmed reproducible and is ready to work onp: material_uimaterial_ui package in flutter/packagesplatform-iosiOS applications specificallyplatform-linuxBuilding on or for Linux specificallyplatform-macosBuilding on or for macOS specificallyteam-text-inputOwned by Text Input team

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions