initialize method
Initializes the state by loading data from storage (if useStorage
)
Implementation
Future<void> initialize({
List<Locale>? locales,
List<DeviceInfo>? devices,
}) async {
await state.maybeWhen(
notInitialized: () async {
state = const DevicePreviewState.initializing();
final availaiableLocales = locales != null
? locales
.map(
(available) =>
defaultAvailableLocales.cast<NamedLocale?>().firstWhere(
(all) => all!.code == available.toString(),
orElse: () => null,
),
)
.where((x) => x != null)
.toList()
: defaultAvailableLocales;
final defaultLocale = device_preview
.basicLocaleListResolution(
WidgetsBinding.instance!.window.locales,
availaiableLocales.map((x) => x!.locale).toList(),
)
.toString();
devices = devices ?? Devices.all;
DevicePreviewData? data;
try {
data = await storage.load();
} catch (e) {
// ignore: avoid_print
print('[device_preview] Error while restoring data: $e');
}
data ??= DevicePreviewData(
locale: defaultLocale,
customDevice: _defaultCustomDevice,
);
if (data.customDevice == null) {
data = data.copyWith(
customDevice: _defaultCustomDevice,
);
}
state = DevicePreviewState.initialized(
locales: availaiableLocales.cast<NamedLocale>(),
devices: devices!,
data: data,
);
},
orElse: () => Future.value(),
);
}