From d828d0fccde568034df1b6029eadf689e3a1dd70 Mon Sep 17 00:00:00 2001 From: wcjord <32568597+wcjord@users.noreply.github.com> Date: Tue, 25 Mar 2025 14:44:12 -0400 Subject: [PATCH] chore(reading_assistance): quick remove of expanded --- .../widgets/word_zoom/morph_focus_widget.dart | 342 +++++++++--------- 1 file changed, 167 insertions(+), 175 deletions(-) diff --git a/lib/pangea/toolbar/widgets/word_zoom/morph_focus_widget.dart b/lib/pangea/toolbar/widgets/word_zoom/morph_focus_widget.dart index cd3204fc2..36af01f6a 100644 --- a/lib/pangea/toolbar/widgets/word_zoom/morph_focus_widget.dart +++ b/lib/pangea/toolbar/widgets/word_zoom/morph_focus_widget.dart @@ -1,10 +1,6 @@ // stateful widget that displays morphological label and a shimmer effect while the text is loading // takes a token and morphological feature as input -import 'package:flutter/material.dart'; - -import 'package:flutter_gen/gen_l10n/l10n.dart'; - import 'package:fluffychat/pangea/analytics_details_popup/analytics_details_popup.dart'; import 'package:fluffychat/pangea/analytics_details_popup/morph_meaning_widget.dart'; import 'package:fluffychat/pangea/analytics_misc/construct_type_enum.dart'; @@ -25,6 +21,8 @@ import 'package:fluffychat/pangea/morphs/morph_repo.dart'; import 'package:fluffychat/pangea/morphs/morph_tag_display.dart'; import 'package:fluffychat/pangea/toolbar/widgets/message_selection_overlay.dart'; import 'package:fluffychat/widgets/future_loading_dialog.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/l10n.dart'; class MorphFocusWidget extends StatefulWidget { final PangeaToken token; @@ -167,188 +165,182 @@ class MorphFocusWidgetState extends State { @override Widget build(BuildContext context) { if (!editMode) { - return Expanded( - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - MorphFeatureDisplay( - morphFeature: widget.morphFeature, - ), - if (widget.token.getMorphTag(widget.morphFeature) != null) ...[ - Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Tooltip( - triggerMode: TooltipTriggerMode.tap, - message: L10n.of(context).doubleClickToEdit, - child: GestureDetector( - onLongPress: enterEditMode, - onDoubleTap: enterEditMode, - child: MorphTagDisplay( - morphFeature: MorphFeaturesEnumExtension.fromString( - widget.morphFeature, - ), - morphTag: - widget.token.getMorphTag(widget.morphFeature) ?? - L10n.of(context).nan, - textColor: Theme.of(context).brightness == - Brightness.light - ? id.constructUses.lemmaCategory.darkColor(context) - : id.constructUses.lemmaCategory.color(context), - ), - ), - ), - const SizedBox(width: 6), - ConstructXpWidget( - id: id, - onTap: () => showDialog( - context: context, - builder: (context) => AnalyticsPopupWrapper( - constructZoom: id, - view: ConstructTypeEnum.morph, - ), - ), - ), - ], - ), - MorphMeaningWidget( - feature: widget.morphFeature, - tag: widget.token.getMorphTag(widget.morphFeature)!, - ), - ] else - Text(L10n.of(context).nan), - ], - ), - ); - } - - return Expanded( - child: Padding( - padding: const EdgeInsets.all(4.0), - child: Column( - children: [ - Text( - "${L10n.of(context).pangeaBotIsFallible} ${L10n.of(context).chooseCorrectLabel}", - textAlign: TextAlign.center, - style: const TextStyle(fontStyle: FontStyle.italic), - ), - FutureBuilder( - future: MorphsRepo.get(), - builder: (context, snapshot) { - final allMorphTagsForEdit = - snapshot.data?.getDisplayTags(widget.morphFeature) ?? - defaultMorphMapping.getDisplayTags(widget.morphFeature); - - if (snapshot.connectionState == ConnectionState.waiting) { - return const CircularProgressIndicator(); - } - - return Wrap( - children: allMorphTagsForEdit.map((tag) { - return Container( - margin: const EdgeInsets.all(2), - padding: EdgeInsets.zero, - decoration: BoxDecoration( - borderRadius: const BorderRadius.all( - Radius.circular(10), - ), - border: Border.all( - color: selectedMorphTag == tag - ? Theme.of(context).colorScheme.primary - : Colors.transparent, - style: BorderStyle.solid, - width: 2.0, - ), - ), - child: TextButton( - style: ButtonStyle( - padding: WidgetStateProperty.all( - const EdgeInsets.symmetric( - horizontal: 7, - ), - ), - backgroundColor: WidgetStateProperty.all( - selectedMorphTag == tag - ? Theme.of(context) - .colorScheme - .primary - .withAlpha(50) - : Colors.transparent, - ), - shape: WidgetStateProperty.all( - RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10), - ), - ), - ), - onPressed: () { - setState(() => selectedMorphTag = tag); - }, - child: Text( - getGrammarCopy( - category: widget.morphFeature, - lemma: tag, - context: context, - ) ?? - tag, - textAlign: TextAlign.center, - ), - ), - ); - }).toList(), - ); - }, - ), + return Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + MorphFeatureDisplay( + morphFeature: widget.morphFeature, + ), + if (widget.token.getMorphTag(widget.morphFeature) != null) ...[ Row( mainAxisAlignment: MainAxisAlignment.center, - spacing: 10, + crossAxisAlignment: CrossAxisAlignment.center, children: [ - ElevatedButton( - style: ElevatedButton.styleFrom( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), + Tooltip( + triggerMode: TooltipTriggerMode.tap, + message: L10n.of(context).doubleClickToEdit, + child: GestureDetector( + onLongPress: enterEditMode, + onDoubleTap: enterEditMode, + child: MorphTagDisplay( + morphFeature: MorphFeaturesEnumExtension.fromString( + widget.morphFeature, + ), + morphTag: widget.token.getMorphTag(widget.morphFeature) ?? + L10n.of(context).nan, + textColor: Theme.of(context).brightness == + Brightness.light + ? id.constructUses.lemmaCategory.darkColor(context) + : id.constructUses.lemmaCategory.color(context), ), - padding: const EdgeInsets.symmetric(horizontal: 10), ), - onPressed: () { - setState(() { - editMode = false; - }); - }, - child: Text(L10n.of(context).cancel), ), - ElevatedButton( - style: ElevatedButton.styleFrom( - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(10.0), + const SizedBox(width: 6), + ConstructXpWidget( + id: id, + onTap: () => showDialog( + context: context, + builder: (context) => AnalyticsPopupWrapper( + constructZoom: id, + view: ConstructTypeEnum.morph, ), - padding: const EdgeInsets.symmetric(horizontal: 10), ), - onPressed: selectedMorphTag == - widget.token.morph[widget.morphFeature] - ? null - : () => showFutureLoadingDialog( - context: context, - future: () => saveChanges( - (token) { - token.morph[widget.morphFeature] = - selectedMorphTag; - if (widget.morphFeature.toLowerCase() == - 'pos') { - token.pos = selectedMorphTag; - } - return token; - }, - ), - ), - child: Text(L10n.of(context).saveChanges), ), ], ), - ], - ), + MorphMeaningWidget( + feature: widget.morphFeature, + tag: widget.token.getMorphTag(widget.morphFeature)!, + ), + ] else + Text(L10n.of(context).nan), + ], + ); + } + + return Padding( + padding: const EdgeInsets.all(4.0), + child: Column( + children: [ + Text( + "${L10n.of(context).pangeaBotIsFallible} ${L10n.of(context).chooseCorrectLabel}", + textAlign: TextAlign.center, + style: const TextStyle(fontStyle: FontStyle.italic), + ), + FutureBuilder( + future: MorphsRepo.get(), + builder: (context, snapshot) { + final allMorphTagsForEdit = + snapshot.data?.getDisplayTags(widget.morphFeature) ?? + defaultMorphMapping.getDisplayTags(widget.morphFeature); + + if (snapshot.connectionState == ConnectionState.waiting) { + return const CircularProgressIndicator(); + } + + return Wrap( + children: allMorphTagsForEdit.map((tag) { + return Container( + margin: const EdgeInsets.all(2), + padding: EdgeInsets.zero, + decoration: BoxDecoration( + borderRadius: const BorderRadius.all( + Radius.circular(10), + ), + border: Border.all( + color: selectedMorphTag == tag + ? Theme.of(context).colorScheme.primary + : Colors.transparent, + style: BorderStyle.solid, + width: 2.0, + ), + ), + child: TextButton( + style: ButtonStyle( + padding: WidgetStateProperty.all( + const EdgeInsets.symmetric( + horizontal: 7, + ), + ), + backgroundColor: WidgetStateProperty.all( + selectedMorphTag == tag + ? Theme.of(context) + .colorScheme + .primary + .withAlpha(50) + : Colors.transparent, + ), + shape: WidgetStateProperty.all( + RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), + ), + ), + ), + onPressed: () { + setState(() => selectedMorphTag = tag); + }, + child: Text( + getGrammarCopy( + category: widget.morphFeature, + lemma: tag, + context: context, + ) ?? + tag, + textAlign: TextAlign.center, + ), + ), + ); + }).toList(), + ); + }, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + spacing: 10, + children: [ + ElevatedButton( + style: ElevatedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + padding: const EdgeInsets.symmetric(horizontal: 10), + ), + onPressed: () { + setState(() { + editMode = false; + }); + }, + child: Text(L10n.of(context).cancel), + ), + ElevatedButton( + style: ElevatedButton.styleFrom( + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10.0), + ), + padding: const EdgeInsets.symmetric(horizontal: 10), + ), + onPressed: selectedMorphTag == + widget.token.morph[widget.morphFeature] + ? null + : () => showFutureLoadingDialog( + context: context, + future: () => saveChanges( + (token) { + token.morph[widget.morphFeature] = + selectedMorphTag; + if (widget.morphFeature.toLowerCase() == 'pos') { + token.pos = selectedMorphTag; + } + return token; + }, + ), + ), + child: Text(L10n.of(context).saveChanges), + ), + ], + ), + ], ), ); }