gnssview_old/lib/sky/skyInfo.dart
2024-07-30 18:20:27 +08:00

124 lines
3.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:gnssview/sky/device_type.dart';
import 'mulbutton.dart';
class SkyInfo extends StatelessWidget {
final String lat; // 纬度
final String lon; // 经度
final String hdop; // 高程
final int status; // 定位状态
final int view; // 可见
final int use; // 使用
final String time; // 时间
const SkyInfo({
super.key,
required this.lat,
required this.lon,
required this.hdop,
required this.status,
required this.view,
required this.use,
required this.time,
});
@override
Widget build(BuildContext context) {
final isPortrait =
MediaQuery.of(context).orientation == Orientation.portrait;
return Theme(
data: ThemeData(
textTheme: const TextTheme(
titleLarge: TextStyle(
fontSize: 30,
fontWeight: FontWeight.normal,
),
),
),
child: Container(
margin: const EdgeInsets.only(left: 5),
padding: const EdgeInsets.symmetric(vertical: 20),
alignment: Alignment.centerLeft,
child:
Column(crossAxisAlignment: CrossAxisAlignment.start, children: [
// 创建行项的函数
rowItem(context, "北纬:", lat.contains("-") ? '$lat S ' : '$lat N '),
rowItem(context, "东经:", lon.contains("-") ? '$lon W ' : '$lon E '),
rowItem(context, "高程:", '$hdop'),
rowItem(context, "定位状态:", ""),
rowItem(context, "可见:", '$view'),
rowItem(context, "使用:", '$use'),
rowItem(context, "时间:", time),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
MulButton(
colors: const [
Colors.blue,
Colors.red,
Colors.green,
Colors.orange
],
onSelectionChanged: (selectedColors) {
// 处理选中的颜色
print('选中的颜色: $selectedColors');
},
),
],
),
]),
));
}
Widget rowItem(BuildContext context, String title, String text) => Row(
children: [
FixedWidthTextWidget(
width: 80,
text: title,
style: Theme.of(context).textTheme.titleLarge,
),
Text(
text,
style: Theme.of(context).textTheme.titleLarge,
),
],
);
}
class FixedWidthTextWidget extends StatelessWidget {
final String text;
final double width;
final TextStyle? style;
FixedWidthTextWidget({
super.key,
required this.text,
this.width = 80,
this.style,
});
TextStyle? textStyle;
@override
Widget build(BuildContext context) {
final deviceType = getDeviceType(context);
double dynamicWidth = deviceType == DeviceType.mobile ? 0 : 50;
if (style != null) {
textStyle =
style!.copyWith(fontSize: deviceType == DeviceType.mobile ? 16 : 20);
} else {
textStyle =
TextStyle(fontSize: deviceType == DeviceType.mobile ? 16 : 20);
}
return Container(
margin: const EdgeInsets.symmetric(horizontal: 3),
width: width + dynamicWidth,
child: Text(
text,
style: textStyle,
),
);
}
}