Skip to content

Commit

Permalink
fix: debugger
Browse files Browse the repository at this point in the history
  • Loading branch information
YumNumm committed Jan 17, 2024
1 parent 2549add commit 2c4b1dd
Show file tree
Hide file tree
Showing 6 changed files with 98 additions and 14 deletions.
File renamed without changes.
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import 'package:eqmonitor/core/provider/capture/intensity_icon_render.dart';
import 'package:eqmonitor/core/provider/config/theme/intensity_color/intensity_color_provider.dart';
import 'package:eqmonitor/core/provider/config/theme/intensity_color/model/intensity_color_model.dart';
import 'package:eqmonitor/core/provider/jma_parameter/jma_parameter.dart';
import 'package:eqmonitor/core/provider/map_style/map_style.dart';
import 'package:eqmonitor/feature/earthquake_history/model/state/earthquake_history_item.dart';
import 'package:eqmonitor/feature/map_libre/provider/map_style.dart';
import 'package:extensions/extensions.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
Expand Down
91 changes: 88 additions & 3 deletions lib/feature/home/features/map/view/main_map_view.dart
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
import 'dart:async';
import 'dart:convert';

import 'package:eqmonitor/core/provider/capture/intensity_icon_render.dart';
import 'package:eqmonitor/core/provider/map_style/map_style.dart';
import 'package:eqmonitor/feature/home/features/debugger/debugger_provider.dart';
import 'package:eqmonitor/feature/home/features/estimated_intensity/provider/estimated_intensity_provider.dart';
import 'package:eqmonitor/feature/home/features/map/viewmodel/main_map_viewmodel.dart';
import 'package:eqmonitor/feature/home/features/travel_time/provider/travel_time_provider.dart';
import 'package:eqmonitor/feature/map_libre/provider/map_style.dart';
import 'package:eqmonitor/gen/fonts.gen.dart';
import 'package:flutter/material.dart';
import 'package:flutter/scheduler.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
Expand All @@ -27,6 +31,7 @@ class MainMapView extends HookConsumerWidget {
useFuture(
getStyleJsonFuture,
);
final cameraPosition = useState<String>('');

final controller = useAnimationController(
duration: const Duration(microseconds: 1000),
Expand Down Expand Up @@ -92,7 +97,19 @@ class MainMapView extends HookConsumerWidget {
zoom: 3,
),
styleString: stylePath.value,
onMapCreated: (controller) => mapController.value = controller,
onMapCreated: (controller) {
mapController.value = controller;

controller.addListener(
() {
final position = controller.cameraPosition;
if (position != null) {
cameraPosition.value =
const JsonEncoder.withIndent(' ').convert(position.toMap());
}
},
);
},
onStyleLoadedCallback: () async {
final controller = mapController.value;
await controller?.setSymbolIconAllowOverlap(true);
Expand Down Expand Up @@ -139,8 +156,76 @@ class MainMapView extends HookConsumerWidget {
},
rotateGesturesEnabled: false,
tiltGesturesEnabled: false,
trackCameraPosition: true,
),
);
return Stack(
children: [
map,
if (ref
.watch(debuggerProvider.select((value) => value.isDebugger))) ...[
_MapDebugWidget(cameraPosition: cameraPosition),
],
],
);
}
}

class _MapDebugWidget extends HookConsumerWidget {
const _MapDebugWidget({
required this.cameraPosition,
});

final ValueNotifier<String> cameraPosition;

@override
Widget build(BuildContext context, WidgetRef ref) {
final isExpanded = useState(false);
if (!isExpanded.value) {
return AnimatedSwitcher(
duration: const Duration(milliseconds: 300),
child: Align(
alignment: Alignment.topLeft,
child: Padding(
padding: const EdgeInsets.all(8),
child: FilledButton.tonalIcon(
onPressed: () => isExpanded.value = true,
label: const Text(
'Debug',
style: TextStyle(
fontFamily: FontFamily.jetBrainsMono,
),
),
icon: const Icon(Icons.bug_report),
),
),
),
);
}
return AnimatedSwitcher(
duration: const Duration(milliseconds: 300),
child: InkWell(
onTap: () => isExpanded.value = false,
child: Card(
color: Theme.of(context).colorScheme.surface.withOpacity(0.8),
child: Padding(
padding: const EdgeInsets.all(8),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
Text(
'${cameraPosition.value}\n'
'EewEstimatedIntensity: ${ref.watch(estimatedIntensityProvider).firstOrNull}',
style: const TextStyle(
fontSize: 10,
fontFamily: FontFamily.jetBrainsMono,
),
),
],
),
),
),
),
);
return map;
}
}
17 changes: 8 additions & 9 deletions lib/feature/home/features/map/viewmodel/main_map_viewmodel.dart
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ import 'package:eqapi_types/lib.dart';
import 'package:eqmonitor/core/provider/capture/intensity_icon_render.dart';
import 'package:eqmonitor/core/provider/config/theme/intensity_color/intensity_color_provider.dart';
import 'package:eqmonitor/core/provider/config/theme/intensity_color/model/intensity_color_model.dart';
import 'package:eqmonitor/core/provider/map_style/map_style.dart';
import 'package:eqmonitor/feature/earthquake_history/model/state/earthquake_history_item.dart';
import 'package:eqmonitor/feature/home/features/eew/provider/eew_alive_telegram.dart';
import 'package:eqmonitor/feature/home/features/kmoni/viewmodel/kmoni_view_model.dart';
import 'package:eqmonitor/feature/home/features/kmoni_observation_points/model/kmoni_observation_point.dart';
import 'package:eqmonitor/feature/home/features/travel_time/provider/travel_time_provider.dart';
import 'package:eqmonitor/feature/map_libre/provider/map_style.dart';
import 'package:flutter/material.dart';
import 'package:freezed_annotation/freezed_annotation.dart';
import 'package:lat_lng/lat_lng.dart' as lat_lng;
Expand Down Expand Up @@ -102,7 +102,7 @@ class MainMapViewModel extends _$MainMapViewModel {
_eewPsWaveService!.tick(now: now),
_eewHypocenterService!.tick(),
).wait;
// ignore: avoid_catches_without_on_clauses, empty_catches
// ignore: avoid_catches_without_on_clauses, empty_catches
} catch (e) {}
}

Expand Down Expand Up @@ -172,9 +172,10 @@ class MainMapViewModel extends _$MainMapViewModel {
_controller?.addImage(name, bytes);

// ignore: use_setters_to_change_properties
void registerMapController(MaplibreMapController controller) =>
// ignore: void_checks
_controller = controller;
void registerMapController(MaplibreMapController controller) {
// ignore: void_checks
_controller = controller;
}

bool isMapControllerRegistered() => _controller != null;

Expand Down Expand Up @@ -338,8 +339,7 @@ class _EewEstimatedIntensityService {
/// 予想震度を更新する
/// [areas] は Map<予想震度, List<地域コード>>
Future<void> update(Map<JmaForecastIntensity, List<String>> areas) => [

// 各予想震度ごとにFill Layerを追加
// 各予想震度ごとにFill Layerを追加
for (final intensity in JmaForecastIntensity.values)
controller.setFilter(
getFillLayerId(intensity),
Expand All @@ -351,8 +351,7 @@ class _EewEstimatedIntensityService {
areas[intensity] ?? [],
]
],
)
,
),
].wait;

Future<void> dispose() => [
Expand Down
2 changes: 1 addition & 1 deletion packages/jma_parameter_types/lib/tsunami_param.pbjson.dart
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const TsunamiParameter$json = {
'4': 3,
'5': 11,
'6': '.TsunamiParameterItem',
'10': 'items'
'10': 'items',
},
],
};
Expand Down

0 comments on commit 2c4b1dd

Please sign in to comment.