import 'package:flutter/material.dart'; import 'package:get/get.dart'; import 'package:rogapp/utils/location_controller.dart'; enum GPSStatus { high, middle, low } class GpsSignalStrengthIndicator extends StatelessWidget { LocationController locationController; final bool minimized; // コンストラクタにminimizedパラメータを追加し、デフォルト値をfalseに設定 GpsSignalStrengthIndicator({ super.key, required this.locationController, this.minimized = false, // ここでデフォルト値を指定 }); @override Widget build(BuildContext context) { // final LocationController locationController = Get.find(); return Obx(() { String signalStrength = locationController.latestSignalStrength.value; //debugPrint("GpsSignalStrengthIndicator : signalStrength=${signalStrength}"); IconData iconData; Color backgroundColor; String text; // signalStrengthに応じて、アイコン、背景色、テキストを設定 switch (signalStrength) { case 'high': backgroundColor = Colors.green; iconData = Icons.signal_cellular_alt; // iconData = CustomIcons.gps_signal_high; text = 'GPS 強'; break; case 'medium': backgroundColor = Colors.orange; iconData = Icons.signal_cellular_alt_2_bar; // iconData = CustomIcons.gps_signal_middle; text = 'GPS 中'; break; default: backgroundColor = Colors.grey; // Fallback color iconData = Icons.signal_cellular_connected_no_internet_4_bar; // iconData = CustomIcons.gps_signal_low; text = 'GPS 弱'; } // コンテナの設定をminimizedの値に応じて調整 return Container( height: minimized ? 40 : null, width: minimized ? 40 : null, padding: minimized ? null : const EdgeInsets.symmetric(vertical: 8, horizontal: 16), decoration: BoxDecoration( color: backgroundColor, shape: minimized ? BoxShape.circle : BoxShape.rectangle, borderRadius: minimized ? null : BorderRadius.circular(10), ), child: minimized ? Center( child: Icon(iconData, color: Colors.white, size: 24), ) : Row( mainAxisSize: MainAxisSize.min, children: [ Icon(iconData, color: Colors.white), const SizedBox(width: 8), Text( text, style: const TextStyle(color: Colors.white, fontWeight: FontWeight.bold), ), ], ), ); }); } }