79 lines
2.7 KiB
Dart
79 lines
2.7 KiB
Dart
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<LocationController>();
|
|
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),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
});
|
|
}
|
|
}
|
|
|