of static method
Implementation
static DevicePreviewStyle of(BuildContext context) {
final widget =
context.dependOnInheritedWidgetOfExactType<DevicePreviewTheme>();
var result = widget?.style;
/// If no theme, the tool preferences are used.
if (result == null) {
final settings = context.select(
(DevicePreviewStore store) => store.settings,
);
final position = () {
switch (settings.toolbarPosition) {
case DevicePreviewToolBarPositionData.top:
return DevicePreviewToolBarPosition.top;
case DevicePreviewToolBarPositionData.left:
return DevicePreviewToolBarPosition.left;
case DevicePreviewToolBarPositionData.right:
return DevicePreviewToolBarPosition.right;
default:
return DevicePreviewToolBarPosition.bottom;
}
}();
result = DevicePreviewStyle(
toolBar: settings.toolbarTheme == DevicePreviewToolBarThemeData.dark
? DevicePreviewToolBarStyle.dark(position: position)
: DevicePreviewToolBarStyle.light(position: position),
background: BoxDecoration(
gradient:
settings.backgroundTheme == DevicePreviewBackgroundThemeData.dark
? const LinearGradient(
colors: [
Color(0xFF111111),
Color(0xFF222222),
],
)
: const LinearGradient(
colors: [
Color(0xFFf5f7fa),
Color(0xFFc3cfe2),
],
),
),
);
}
// If toolbar position isn't supported, fallback to bottom.
final media = MediaQuery.maybeOf(context) ??
MediaQueryData.fromWindow(WidgetsBinding.instance!.window);
if (!DevicePreviewTheme.isPositionAvailableForWidth(
result.toolBar.position,
media.size.width,
)) {
result = result.copyWith(
toolBar: result.toolBar.copyWith(
position: DevicePreviewToolBarPosition.bottom,
),
);
}
return result;
}