@@ -51,6 +51,8 @@ void main() {
5151 );
5252}
5353
54+ bool _boardInitialized = false ;
55+
5456class MyApp extends StatelessWidget {
5557 const MyApp ({super .key});
5658
@@ -65,9 +67,13 @@ class MyApp extends StatelessWidget {
6567 builder: (context, provider, child) {
6668 return MaterialApp (
6769 debugShowCheckedModeBanner: false ,
70+ locale: Locale (provider.config.languageCode),
6871 builder: (context, child) {
6972 registerAppLocalizations (AppLocalizations .of (context)! );
70- getIt <BoardStateProvider >().initialize ();
73+ if (! _boardInitialized) {
74+ _boardInitialized = true ;
75+ getIt <BoardStateProvider >().initialize ();
76+ }
7177 appLocalizations = getIt.get <AppLocalizations >();
7278 return child! ;
7379 },
@@ -79,31 +85,53 @@ class MyApp extends StatelessWidget {
7985 supportedLocales: AppLocalizations .supportedLocales,
8086 initialRoute: '/' ,
8187 routes: {
82- '/' : (context) => const InstrumentsScreen (),
83- '/oscilloscope' : (context) => const OscilloscopeScreen (),
84- '/multimeter' : (context) => const MultimeterScreen (),
85- '/waveGenerator' : (context) => const WaveGeneratorScreen (),
86- '/logicAnalyzer' : (context) => const LogicAnalyzerScreen (),
87- '/powerSource' : (context) => const PowerSourceScreen (),
88- '/compass' : (context) => const CompassScreen (),
89- '/connectDevice' : (context) => const ConnectDeviceScreen (),
90- '/faq' : (context) => FAQScreen (),
91- '/settings' : (context) => const SettingsScreen (),
92- '/aboutUs' : (context) => const AboutUsScreen (),
93- '/softwareLicenses' : (context) => SoftwareLicensesScreen (),
94- '/accelerometer' : (context) => const AccelerometerScreen (),
95- '/gyroscope' : (context) => const GyroscopeScreen (),
96- '/roboticArm' : (context) => const RoboticArmScreen (),
97- '/luxmeter' : (context) => const LuxMeterScreen (),
98- '/barometer' : (context) => const BarometerScreen (),
99- '/soundmeter' : (context) => const SoundMeterScreen (),
100- '/thermometer' : (context) => const ThermometerScreen (),
101- '/sensors' : (context) => const SensorsScreen (),
102- '/experiments' : (context) => const ExperimentsScreen (),
103- '/loggedData' : (context) => LoggedDataScreen (
104- instrumentNames: instrumentNames,
105- appBarName: appLocalizations! .loggedData,
106- instrumentIcons: instrumentIcons,
88+ '/' : (context) =>
89+ const _LocaleAware (child: InstrumentsScreen ()),
90+ '/oscilloscope' : (context) =>
91+ const _LocaleAware (child: OscilloscopeScreen ()),
92+ '/multimeter' : (context) =>
93+ const _LocaleAware (child: MultimeterScreen ()),
94+ '/waveGenerator' : (context) =>
95+ const _LocaleAware (child: WaveGeneratorScreen ()),
96+ '/logicAnalyzer' : (context) =>
97+ const _LocaleAware (child: LogicAnalyzerScreen ()),
98+ '/powerSource' : (context) =>
99+ const _LocaleAware (child: PowerSourceScreen ()),
100+ '/compass' : (context) =>
101+ const _LocaleAware (child: CompassScreen ()),
102+ '/connectDevice' : (context) =>
103+ const _LocaleAware (child: ConnectDeviceScreen ()),
104+ '/faq' : (context) => _LocaleAware (child: FAQScreen ()),
105+ '/settings' : (context) =>
106+ const _LocaleAware (child: SettingsScreen ()),
107+ '/aboutUs' : (context) =>
108+ const _LocaleAware (child: AboutUsScreen ()),
109+ '/softwareLicenses' : (context) =>
110+ _LocaleAware (child: SoftwareLicensesScreen ()),
111+ '/accelerometer' : (context) =>
112+ const _LocaleAware (child: AccelerometerScreen ()),
113+ '/gyroscope' : (context) =>
114+ const _LocaleAware (child: GyroscopeScreen ()),
115+ '/roboticArm' : (context) =>
116+ const _LocaleAware (child: RoboticArmScreen ()),
117+ '/luxmeter' : (context) =>
118+ const _LocaleAware (child: LuxMeterScreen ()),
119+ '/barometer' : (context) =>
120+ const _LocaleAware (child: BarometerScreen ()),
121+ '/soundmeter' : (context) =>
122+ const _LocaleAware (child: SoundMeterScreen ()),
123+ '/thermometer' : (context) =>
124+ const _LocaleAware (child: ThermometerScreen ()),
125+ '/sensors' : (context) =>
126+ const _LocaleAware (child: SensorsScreen ()),
127+ '/experiments' : (context) =>
128+ const _LocaleAware (child: ExperimentsScreen ()),
129+ '/loggedData' : (context) => _LocaleAware (
130+ child: LoggedDataScreen (
131+ instrumentNames: instrumentNames,
132+ appBarName: appLocalizations! .loggedData,
133+ instrumentIcons: instrumentIcons,
134+ ),
107135 ),
108136 },
109137 );
@@ -114,6 +142,21 @@ class MyApp extends StatelessWidget {
114142 }
115143}
116144
145+ class _LocaleAware extends StatelessWidget {
146+ final Widget child;
147+ const _LocaleAware ({required this .child});
148+
149+ @override
150+ Widget build (BuildContext context) {
151+ return Consumer <SettingsConfigProvider >(
152+ builder: (_, provider, __) => KeyedSubtree (
153+ key: ValueKey (provider.config.languageCode),
154+ child: child,
155+ ),
156+ );
157+ }
158+ }
159+
117160void _preCacheImages (BuildContext context) {
118161 for (final path in instrumentIcons) {
119162 precacheImage (AssetImage (path), context);
0 commit comments