Files
rog_app/lib/widgets/gps_status.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({
Key? key,
required this.locationController,
this.minimized = false, // ここでデフォルト値を指定
});
@override
Widget build(BuildContext context) {
// final LocationController locationController = Get.find<LocationController>();
return Obx(() {
String signalStrength = locationController.latestSignalStrength;
print("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),
),
],
),
);
});
}
}