Summary
In RTL locales (e.g., Arabic), the dial code plus sign + is rendered on the right side of the digits (e.g., 971+) instead of the left (e.g., +971). This appears in the country selection dialog. Please see the attached screenshot for an example.
Package version
- country_code_picker: 3.4.0
Environment
- Flutter: 3.35.1
- Dart: 3.9.0
- Platform: Android & iOS
- Locale(s): ar, ar_AE (reproducible with any RTL locale)
Steps to reproduce
- Run the example app or any app using
SelectionDialog under an RTL locale (e.g., Arabic).
- Open the country selection dialog.
- Observe some dial codes render as
CountryName 971+ rather than CountryName +971.
Expected behavior
- The dial code should always render LTR so the
+ remains to the left of the digits, e.g. +971.
Actual behavior
- In RTL, the dial code renders as if it were RTL, causing the
+ to flip to the end.
Root cause
- Unicode bidi rules cause the
+ and digits to be reordered in RTL contexts. The dial code segment needs explicit LTR direction.
Attachments

Summary
In RTL locales (e.g., Arabic), the dial code plus sign
+is rendered on the right side of the digits (e.g.,971+) instead of the left (e.g.,+971). This appears in the country selection dialog. Please see the attached screenshot for an example.Package version
Environment
Steps to reproduce
SelectionDialogunder an RTL locale (e.g., Arabic).CountryName 971+rather thanCountryName +971.Expected behavior
+remains to the left of the digits, e.g.+971.Actual behavior
+to flip to the end.Root cause
+and digits to be reordered in RTL contexts. The dial code segment needs explicit LTR direction.Attachments