/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġandroidx . ui . text . style Ċ Ċ // ĠA Ġdirection Ġin Ġwhich Ġtext Ġflows . Ċ // Ċ // ĠSome Ġlanguages Ġare Ġwritten Ġfrom Ġthe Ġleft Ġto Ġthe Ġright Ġ( for Ġexample , ĠEnglish , Ċ // ĠT amil , Ġor ĠChinese ), Ġwhile Ġothers Ġare Ġwritten Ġfrom Ġthe Ġright Ġto Ġthe Ġleft Ġ( for Ċ // Ġexample ĠA ram aic , ĠH eb rew , Ġor ĠU r du ). ĠSome Ġare Ġalso Ġwritten Ġin Ġa Ġmixture , Ġfor Ċ // Ġexample ĠAr abic Ġis Ġmostly Ġwritten Ġright - to - left , Ġwith Ġnumer als Ġwritten Ċ // Ġleft - to - right . Ċ // Ċ // ĠThe Ġtext Ġdirection Ġmust Ġbe Ġprovided Ġto ĠAPIs Ġthat Ġrender Ġtext Ġor Ġlay Ġout Ċ // Ġboxes Ġh orizontally , Ġso Ġthat Ġthey Ġcan Ġdetermine Ġwhich Ġdirection Ġto Ġstart Ġin : Ċ // Ġeither Ġright - to - left , Ġ[ Text Direction . rtl ]; Ġor Ġleft - to - right , Ċ // Ġ[ Text Direction . ltr ]. Ċ // Ċ // Ġ## ĠDesign Ġdiscussion Ċ // Ċ // ĠFlutter Ġis Ġdesigned Ġto Ġaddress Ġthe Ġneeds Ġof Ġapplications Ġwritten Ġin Ġany Ġof Ċ // Ġthe Ġworld 's Ġcurrently - used Ġlanguages , Ġwhether Ġthey Ġuse Ġa Ġright - to - left Ġor Ċ // Ġleft - to - right Ġwriting Ġdirection . ĠFlutter Ġdoes Ġnot Ġsupport Ġother Ġwriting Ċ // Ġmodes , Ġsuch Ġas Ġvertical Ġtext Ġor Ġb ou st rop hed on Ġtext , Ġas Ġthese Ġare Ġrare ly Ġused Ċ // Ġin Ġcomputer Ġprograms . Ċ // Ċ // ĠIt Ġis Ġcommon Ġwhen Ġdeveloping Ġuser Ġinterface Ġframeworks Ġto Ġpick Ġa Ġdefault Ċ // Ġtext Ġdirection ĠâĢĶ Ġtypically Ġleft - to - right , Ġthe Ġdirection Ġmost Ġfamiliar Ġto Ġthe Ċ // Ġengine ers Ġworking Ġon Ġthe Ġframework ĠâĢĶ Ġbecause Ġthis Ġsimpl ifies Ġthe Ġdevelopment Ċ // Ġof Ġapplications Ġon Ġthe Ġplatform . ĠUnfortunately , Ġthis Ġfrequently Ġresults Ġin Ċ // Ġthe Ġplatform Ġhaving Ġunexpected Ġleft - to - right Ġbi ases Ġor Ġassumptions , Ġas Ċ // Ġengine ers Ġwill Ġtypically Ġmiss Ġplaces Ġwhere Ġthey Ġneed Ġto Ġsupport Ċ // Ġright - to - left Ġtext . ĠThis Ġthen Ġresults Ġin Ġbugs Ġthat Ġonly Ġmanifest Ġin Ċ // Ġright - to - left Ġenvironments . Ċ // Ċ // ĠIn Ġan Ġeffort Ġto Ġminimize Ġthe Ġextent Ġto Ġwhich ĠFlutter Ġexperiences Ġthis Ċ // Ġcategory Ġof Ġissues , Ġthe Ġlowest Ġlevels Ġof Ġthe ĠFlutter Ġframework Ġdo Ġnot Ġhave Ġa Ċ // Ġdefault Ġtext Ġreading Ġdirection . ĠAny Ġtime Ġa Ġreading Ġdirection Ġis Ġnecessary , Ċ // Ġfor Ġexample Ġwhen Ġtext Ġis Ġto Ġbe Ġdisplayed , Ġor Ġwhen Ġa Ċ // Ġwriting - direction - dependent Ġvalue Ġis Ġto Ġbe Ġinterpreted , Ġthe Ġreading Ċ // Ġdirection Ġmust Ġbe Ġexplicitly Ġspecified . ĠWhere Ġpossible , Ġsuch Ġas Ġin Ġ` switch ` Ċ // Ġstatements , Ġthe Ġright - to - left Ġcase Ġis Ġlisted Ġfirst , Ġto Ġavoid Ġthe Ġimp ression Ċ // Ġthat Ġit Ġis Ġan Ġafter thought . Ċ // Ċ // ĠAt Ġthe Ġhigher Ġlevels Ġ( specific ally Ġstarting Ġat Ġthe Ġwidgets Ġlibrary ), Ġan Ċ // Ġambient Ġ[ Direction ality ] Ġis Ġintroduced , Ġwhich Ġprovides Ġa Ġdefault . ĠThus , Ġfor Ċ // Ġinstance , Ġa Ġ[ Text ] Ġwidget Ġin Ġthe Ġscope Ġof Ġa Ġ[ Material App ] Ġwidget Ġdoes Ġnot Ċ // Ġneed Ġto Ġbe Ġgiven Ġan Ġexplicit Ġwriting Ġdirection . ĠThe Ġ[ Direction ality . of ] Ċ // Ġstatic Ġmethod Ġcan Ġbe Ġused Ġto Ġobtain Ġthe Ġambient Ġtext Ġdirection Ġfor Ġa Ċ // Ġparticular Ġ[ BuildContext ]. Ċ // Ċ // Ġ### ĠKnown Ġleft - to - right Ġbi ases Ġin ĠFlutter Ċ // Ċ // ĠDes p ite Ġthe Ġdesign Ġintent Ġdescribed Ġabove , Ġcertain Ġleft - to - right Ġbi ases Ġhave Ċ // Ġnon et he less Ġcre pt Ġinto ĠFlutter 's Ġdesign . ĠThese Ġinclude : Ċ // Ċ // Ġ Ġ* ĠThe Ġ[ Canvas ] Ġorigin Ġis Ġat Ġthe Ġtop Ġleft , Ġand Ġthe Ġx - axis Ġincreases Ġin Ġa Ċ // ĠĠĠ Ġleft - to - right Ġdirection . Ċ // Ċ // Ġ Ġ* ĠThe Ġdefault Ġlocalization Ġin Ġthe Ġwidgets Ġand Ġmaterial Ġlibraries Ġis Ċ // ĠĠĠ ĠAmerican ĠEnglish , Ġwhich Ġis Ġleft - to - right . Ċ // Ċ // Ġ### ĠVisual Ġproperties Ġvs Ġdirection al Ġproperties Ċ // Ċ // ĠMany Ġclasses Ġin Ġthe ĠFlutter Ġframework Ġare Ġoffered Ġin Ġtwo Ġversions , Ġa Ċ // Ġvis ually - oriented Ġvariant , Ġand Ġa Ġtext - direction - dependent Ġvariant . ĠFor Ċ // Ġexample , Ġ[ Edge Insets ] Ġis Ġdescribed Ġin Ġterms Ġof Ġtop , Ġleft , Ġright , Ġand Ġbottom , Ċ // Ġwhile Ġ[ Edge Insets Direction al ] Ġis Ġdescribed Ġin Ġterms Ġof Ġtop , Ġstart , Ġend , Ġand Ċ // Ġbottom , Ġwhere Ġstart Ġand Ġend Ġcorrespond Ġto Ġright Ġand Ġleft Ġin Ġright - to - left Ċ // Ġtext Ġand Ġleft Ġand Ġright Ġin Ġleft - to - right Ġtext . Ċ // Ċ // ĠThere Ġare Ġdistinct Ġuse Ġcases Ġfor Ġeach Ġof Ġthese Ġvariants . Ċ // Ċ // ĠText - direction - dependent Ġvariants Ġare Ġuseful Ġwhen Ġdeveloping Ġuser Ġinterfaces Ċ // Ġthat Ġshould Ġ" flip " Ġwith Ġthe Ġtext Ġdirection . ĠFor Ġexample , Ġa Ġparagraph Ġof Ġtext Ċ // Ġin ĠEnglish Ġwill Ġtypically Ġbe Ġleft - aligned Ġand Ġa Ġquote Ġwill Ġbe Ġindent ed Ġfrom Ċ // Ġthe Ġleft , Ġwhile Ġin ĠAr abic Ġit Ġwill Ġbe Ġright - aligned Ġand Ġindent ed Ġfrom Ġthe Ċ // Ġright . ĠBoth Ġof Ġthese Ġcases Ġare Ġdescribed Ġby Ġthe Ġdirection - dependent Ċ // Ġ[ Text Align . start ] Ġand Ġ[ Edge Insets Direction al . start ]. Ċ // Ċ // ĠIn Ġcontrast , Ġthe Ġvisual Ġvariants Ġare Ġuseful Ġwhen Ġthe Ġtext Ġdirection Ġis Ġknown Ċ // Ġand Ġnot Ġaffected Ġby Ġthe Ġreading Ġdirection . ĠFor Ġexample , Ġan Ġapplication Ċ // Ġgiving Ġdriving Ġdirections Ġmight Ġshow Ġa Ġ" turn Ġleft " Ġarrow Ġon Ġthe Ġleft Ġand Ġa Ċ // Ġ" turn Ġright " Ġarrow Ġon Ġthe Ġright ĠâĢĶ Ġand Ġwould Ġdo Ġso Ġwhether Ġthe Ġapplication Ċ // Ġwas Ġlocalized Ġto ĠFrench Ġ( left - to - right ) Ġor ĠH eb rew Ġ( right - to - left ). Ċ // Ċ // ĠIn Ġpractice , Ġit Ġis Ġalso Ġexpected Ġthat Ġmany Ġdevelopers Ġwill Ġonly Ġbe Ċ // Ġtargeting Ġone Ġlanguage , Ġand Ġin Ġthat Ġcase Ġit Ġmay Ġbe Ġsimpler Ġto Ġthink Ġin Ċ // Ġvisual Ġterms . Ċ // ĠThe Ġorder Ġof Ġthis Ġenum Ġmust Ġmatch Ġthe Ġorder Ġof Ġthe Ġvalues Ġin ĠText Direction . h 's ĠText Direction . Ċ enum Ġclass ĠText Direction Ġ{ ĊĠĠĠ Ġ// ĠThe Ġtext Ġflows Ġfrom Ġright Ġto Ġleft Ġ( e . g . ĠAr abic , ĠH eb rew ). ĊĠĠĠ ĠL tr , ĊĠĠĠ Ġ// ĠThe Ġtext Ġflows Ġfrom Ġleft Ġto Ġright Ġ( e . g ., ĠEnglish , ĠFrench ). ĊĠĠĠ ĠR tl Ċ }