package Ġcom . example . words app . data Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroidx . datastore . core . DataStore Ċ import Ġandroidx . datastore . preferences . core . Preferences Ċ import Ġandroidx . datastore . preferences . core . boolean Preferences Key Ċ import Ġandroidx . datastore . preferences . core . edit Ċ import Ġandroidx . datastore . preferences . core . empty Preferences Ċ import Ġandroidx . datastore . preferences . preferences DataStore Ċ import Ġkotlinx . coroutines . flow . Flow Ċ import Ġkotlinx . coroutines . flow . catch Ċ import Ġkotlinx . coroutines . flow . map Ċ import Ġjava . io . IOException Ċ Ċ private Ġconst Ġval ĠLAY OUT _ PREFER ENCES _ NAME Ġ= Ġ" layout _ preferences " Ċ Ċ // ĠCreate Ġa ĠData Store Ġinstance Ġusing Ġthe Ġpreferences DataStore Ġdelegate , Ġwith Ġthe ĠContext Ġas Ġreceiver . Ċ private Ġval ĠContext . data Store : ĠData Store < Preferences > Ġby Ġpreferences DataStore ( ĊĠĠĠ Ġname Ġ= ĠLAY OUT _ PREFER ENCES _ NAME Ċ ) Ċ Ċ class ĠSettings DataStore ( context : ĠContext ) Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠIS _ LINEAR _ LAYOUT _ MANAGER Ġ= Ġboolean Preferences Key (" is _ linear _ layout _ manager ") ĊĊĠĠĠ Ġsuspend Ġfun Ġsave Layout To Preferences Store ( is Linear LayoutManager : ĠBoolean , Ġcontext : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontext . data Store . edit Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences [ this . IS _ LINEAR _ LAYOUT _ MANAGER ] Ġ= Ġis Linear LayoutManager ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġpreference Flow : ĠFlow < Boolean > Ġ= Ġcontext . data Store . data ĊĠĠĠĠĠĠĠ Ġ. catch Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( it Ġis ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemit ( empty Preferences ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġit ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġpreferences Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOn Ġthe Ġfirst Ġrun Ġof Ġthe Ġapp , Ġwe Ġwill Ġuse ĠLinearLayoutManager Ġby Ġdefault ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreferences [ IS _ LINEAR _ LAYOUT _ MANAGER ] Ġ?: Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ċ }