fix: use construct id json in route for analytics details page
This commit is contained in:
parent
b8f2a85eed
commit
75b60781af
6 changed files with 25 additions and 8 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
|
|
@ -540,9 +541,10 @@ abstract class AppRoutes {
|
|||
GoRoute(
|
||||
path: ':construct',
|
||||
pageBuilder: (context, state) {
|
||||
final construct = ConstructIdentifier.fromString(
|
||||
state.pathParameters['construct']!,
|
||||
final construct = ConstructIdentifier.fromJson(
|
||||
jsonDecode(state.pathParameters['construct']!),
|
||||
);
|
||||
|
||||
return defaultPageBuilder(
|
||||
context,
|
||||
state,
|
||||
|
|
@ -571,8 +573,8 @@ abstract class AppRoutes {
|
|||
GoRoute(
|
||||
path: ':construct',
|
||||
pageBuilder: (context, state) {
|
||||
final construct = ConstructIdentifier.fromString(
|
||||
state.pathParameters['construct']!,
|
||||
final construct = ConstructIdentifier.fromJson(
|
||||
jsonDecode(state.pathParameters['construct']!),
|
||||
);
|
||||
return defaultPageBuilder(
|
||||
context,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
|
|
@ -164,7 +166,7 @@ class MorphFeatureBox extends StatelessWidget {
|
|||
morphTag: morphTag,
|
||||
constructAnalytics: analytics,
|
||||
onTap: () => context.go(
|
||||
"/rooms/analytics/${id.type.string}/${Uri.encodeComponent(id.string)}",
|
||||
"/rooms/analytics/${id.type.string}/${Uri.encodeComponent(jsonEncode(id.toJson()))}",
|
||||
),
|
||||
);
|
||||
},
|
||||
|
|
|
|||
|
|
@ -36,6 +36,14 @@ class VocabDetailsViewState extends State<VocabDetailsView> {
|
|||
_emojiNotifier.value = constructId.userLemmaInfo.emojis?.firstOrNull;
|
||||
}
|
||||
|
||||
@override
|
||||
void didUpdateWidget(covariant VocabDetailsView oldWidget) {
|
||||
super.didUpdateWidget(oldWidget);
|
||||
if (oldWidget.constructId != widget.constructId) {
|
||||
_emojiNotifier.value = constructId.userLemmaInfo.emojis?.firstOrNull;
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_emojiNotifier.dispose();
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
|
|
@ -182,7 +184,7 @@ class VocabAnalyticsListView extends StatelessWidget {
|
|||
.userController.userL2Code!,
|
||||
);
|
||||
context.go(
|
||||
"/rooms/analytics/${vocabItem.id.type.string}/${Uri.encodeComponent(vocabItem.id.string)}",
|
||||
"/rooms/analytics/${vocabItem.id.type.string}/${Uri.encodeComponent(jsonEncode(vocabItem.id.toJson()))}",
|
||||
);
|
||||
},
|
||||
constructId: vocabItem.id,
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import 'package:go_router/go_router.dart';
|
||||
|
|
@ -55,7 +57,7 @@ mixin LemmaEmojiSetter {
|
|||
onTap: () {
|
||||
ScaffoldMessenger.of(context).hideCurrentSnackBar();
|
||||
context.go(
|
||||
"/rooms/analytics/${constructId.type.name}/${Uri.encodeComponent(constructId.string)}",
|
||||
"/rooms/analytics/${constructId.type.name}/${Uri.encodeComponent(jsonEncode(constructId.toJson()))}",
|
||||
);
|
||||
},
|
||||
),
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// ignore_for_file: depend_on_referenced_packages, implementation_imports
|
||||
|
||||
import 'dart:async';
|
||||
import 'dart:convert';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
|
|
@ -168,7 +169,7 @@ class ConstructNotificationOverlayState
|
|||
|
||||
void _showDetails() {
|
||||
context.go(
|
||||
"/rooms/analytics/${ConstructTypeEnum.morph.string}/${Uri.encodeComponent(widget.construct.string)}",
|
||||
"/rooms/analytics/${ConstructTypeEnum.morph.string}/${Uri.encodeComponent(jsonEncode(widget.construct.toJson()))}",
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue