Line data Source code
1 : import 'package:flutter/material.dart'; 2 : import 'package:widgetbook/src/providers/device_provider.dart'; 3 : import 'package:widgetbook/src/utils/extensions.dart'; 4 : import 'package:widgetbook_models/widgetbook_models.dart'; 5 : 6 : class DeviceItem extends StatelessWidget { 7 0 : const DeviceItem({ 8 : Key? key, 9 : required this.device, 10 0 : }) : super(key: key); 11 : 12 : final Device device; 13 : 14 0 : @override 15 : Widget build(BuildContext context) { 16 0 : final deviceProvider = DeviceProvider.of(context)!; 17 0 : final state = deviceProvider.state; 18 0 : final isCurrent = device == state.currentDevice; 19 : 20 0 : return GestureDetector( 21 0 : onTap: () { 22 0 : deviceProvider.selectDevice( 23 0 : device, 24 : ); 25 : }, 26 0 : child: buildTooltip( 27 : context: context, 28 : isCurrent: isCurrent, 29 : ), 30 : ); 31 : } 32 : 33 0 : Widget buildTooltip( 34 : {required BuildContext context, required bool isCurrent}) { 35 0 : return Tooltip( 36 0 : message: device.name, 37 0 : child: buildIcon( 38 0 : device.type, 39 0 : isCurrent ? context.colorScheme.primary : context.theme.hintColor, 40 : ), 41 : ); 42 : } 43 : 44 0 : Widget buildIcon(DeviceType type, Color color) { 45 : switch (type) { 46 0 : case DeviceType.watch: 47 0 : return Icon( 48 : Icons.watch, 49 : color: color, 50 : ); 51 0 : case DeviceType.mobile: 52 0 : return Icon( 53 : Icons.smartphone, 54 : color: color, 55 : ); 56 0 : case DeviceType.tablet: 57 0 : return Icon( 58 : Icons.tablet, 59 : color: color, 60 : ); 61 0 : case DeviceType.desktop: 62 0 : return Icon( 63 : Icons.desktop_windows, 64 : color: color, 65 : ); 66 0 : case DeviceType.unknown: 67 0 : return Icon( 68 : Icons.quiz, 69 : color: color, 70 : ); 71 : } 72 : } 73 : }