Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
95 changes: 50 additions & 45 deletions lib/src/utils/mistake_popup.dart
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,18 @@ class LanguageToolMistakePopup extends StatelessWidget {
static const double _defaultVerticalMargin = 25.0;
static const double _defaultHorizontalMargin = 10.0;
static const double _defaultMaxWidth = 250.0;
static const _iconSize = 25.0;
static const double _logoSize = 25;
static const double _headerIconSize = 12;

static const double _borderRadius = 10.0;
static const double _mistakeNameFontSize = 11.0;
static const double _mistakeMessageFontSize = 13.0;
static const double _replacementButtonsSpacing = 4.0;
static const double _replacementButtonsSpacingMobile = -6.0;
static const double _paddingBetweenTitle = 14.0;
static const double _titleLetterSpacing = 0.56;
static const double _dismissSplashRadius = 2.0;
static const double _padding = 10.0;

/// Renderer used to display this window.
final PopupOverlayRenderer popupRenderer;
Expand Down Expand Up @@ -84,9 +95,11 @@ class LanguageToolMistakePopup extends StatelessWidget {
/// Mistake suggestion style.
final ButtonStyle? mistakeStyle;

/// [LanguageToolMistakePopup] constructor
/// Optional builder that adds additional actions to the header.
final List<Widget> Function(BuildContext context)? actionsBuilder;

/// Creates a [LanguageToolMistakePopup].
const LanguageToolMistakePopup({
super.key,
required this.popupRenderer,
required this.mistake,
required this.controller,
Expand All @@ -96,21 +109,12 @@ class LanguageToolMistakePopup extends StatelessWidget {
this.horizontalMargin = _defaultHorizontalMargin,
this.verticalMargin = _defaultVerticalMargin,
this.mistakeStyle,
this.actionsBuilder,
super.key,
});

@override
Widget build(BuildContext context) {
const _borderRadius = 10.0;
const _mistakeNameFontSize = 11.0;
const _mistakeMessageFontSize = 13.0;
const _replacementButtonsSpacing = 4.0;
const _replacementButtonsSpacingMobile = -6.0;
const _paddingBetweenTitle = 14.0;
const _titleLetterSpacing = 0.56;
const _dismissSplashRadius = 2.0;

const padding = 10.0;

final availableSpace = _calculateAvailableSpace(context);

final colorScheme = Theme.of(context).colorScheme;
Expand Down Expand Up @@ -149,43 +153,44 @@ class LanguageToolMistakePopup extends StatelessWidget {
children: [
Padding(
padding: const EdgeInsets.only(left: 4),
child: Row(
children: [
Expanded(
child: Row(
children: [
Padding(
padding: const EdgeInsets.only(right: 5.0),
child: Image.asset(
LangToolImages.logo,
width: _iconSize,
height: _iconSize,
package: 'languagetool_textfield',
child: IconTheme(
data: const IconThemeData(size: _headerIconSize),
child: Row(
children: [
Expanded(
child: Row(
children: [
Padding(
padding: const EdgeInsets.only(right: 5.0),
child: Image.asset(
LangToolImages.logo,
width: _logoSize,
height: _logoSize,
package: 'languagetool_textfield',
),
),
),
const Text('Correct'),
],
const Text('Correct'),
],
),
),
),
IconButton(
icon: const Icon(
Icons.close,
size: 12,
...?actionsBuilder?.call(context),
IconButton(
icon: const Icon(Icons.close),
constraints: const BoxConstraints(),
padding: EdgeInsets.zero,
splashRadius: _dismissSplashRadius,
onPressed: () {
_dismissDialog();
controller.onClosePopup();
},
),
constraints: const BoxConstraints(),
padding: EdgeInsets.zero,
splashRadius: _dismissSplashRadius,
onPressed: () {
_dismissDialog();
controller.onClosePopup();
},
),
],
],
),
),
),
Container(
margin: const EdgeInsets.only(top: 8),
padding: const EdgeInsets.all(padding),
padding: const EdgeInsets.all(_padding),
decoration: BoxDecoration(
color: colorScheme.surface,
borderRadius: BorderRadius.circular(_borderRadius),
Expand All @@ -210,7 +215,7 @@ class LanguageToolMistakePopup extends StatelessWidget {
),
),
Padding(
padding: const EdgeInsets.only(bottom: padding),
padding: const EdgeInsets.only(bottom: _padding),
child: Text(
mistake.message,
style: const TextStyle(
Expand Down