Skip to content
Merged
Show file tree
Hide file tree
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
46 changes: 22 additions & 24 deletions lib/src/view/game/game_result_dialog.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'dart:async';
import 'dart:math';

import 'package:dartchess/dartchess.dart';
import 'package:flutter/cupertino.dart';
Expand Down Expand Up @@ -35,6 +36,25 @@ class GameResultDialog extends ConsumerStatefulWidget {
ConsumerState<GameResultDialog> createState() => _GameEndDialogState();
}

Widget _adaptiveDialog(BuildContext context, Widget content) {
if (defaultTargetPlatform == TargetPlatform.iOS) {
return CupertinoAlertDialog(
content: content,
);
} else {
final screenWidth = MediaQuery.of(context).size.width;
return Dialog(
child: SizedBox(
width: min(screenWidth, 500),
child: Padding(
padding: const EdgeInsets.all(16.0),
child: content,
),
),
);
}
}

class _GameEndDialogState extends ConsumerState<GameResultDialog> {
late Timer _buttonActivationTimer;
bool _activateButtons = false;
Expand Down Expand Up @@ -144,18 +164,7 @@ class _GameEndDialogState extends ConsumerState<GameResultDialog> {
],
);

if (defaultTargetPlatform == TargetPlatform.iOS) {
return CupertinoAlertDialog(
content: content,
);
} else {
return Dialog(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: content,
),
);
}
return _adaptiveDialog(context, content);
}
}

Expand All @@ -176,18 +185,7 @@ class ArchivedGameResultDialog extends StatelessWidget {
],
);

if (defaultTargetPlatform == TargetPlatform.iOS) {
return CupertinoAlertDialog(
content: content,
);
} else {
return Dialog(
child: Padding(
padding: const EdgeInsets.all(16.0),
child: content,
),
);
}
return _adaptiveDialog(context, content);
}
}

Expand Down
107 changes: 57 additions & 50 deletions lib/src/widgets/adaptive_action_sheet.dart
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import 'dart:math';

import 'package:collection/collection.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
Expand Down Expand Up @@ -133,65 +135,70 @@ Future<T?> showMaterialActionSheet<T>({
}) {
final defaultTextStyle =
Theme.of(context).textTheme.titleMedium ?? const TextStyle(fontSize: 20);

final screenWidth = MediaQuery.of(context).size.width;
return showDialog<T>(
context: context,
barrierDismissible: isDismissible,
builder: (BuildContext context) {
return Dialog(
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
if (title != null) ...[
Padding(
padding: const EdgeInsets.all(16.0),
child: Center(child: title),
),
],
...actions.mapIndexed<Widget>((index, action) {
return InkWell(
borderRadius: BorderRadius.vertical(
top: Radius.circular(
index == 0 ? 28 : 0,
),
bottom: Radius.circular(
index == actions.length - 1 ? 28 : 0,
),
),
onTap: () {
if (action.dismissOnPress) {
Navigator.of(context).pop();
}
action.onPressed(context);
},
child: Padding(
child: SizedBox(
width: min(screenWidth, 500),
child: SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.stretch,
mainAxisSize: MainAxisSize.min,
children: <Widget>[
if (title != null) ...[
Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
children: [
if (action.leading != null) ...[
action.leading!,
const SizedBox(width: 15),
],
Expanded(
child: DefaultTextStyle(
style: defaultTextStyle,
textAlign: action.leading != null
? TextAlign.start
: TextAlign.center,
child: action.label,
child: Center(child: title),
),
],
...actions.mapIndexed<Widget>((index, action) {
return InkWell(
borderRadius: BorderRadius.vertical(
top: Radius.circular(
index == 0 ? 28 : 0,
),
bottom: Radius.circular(
index == actions.length - 1 ? 28 : 0,
),
),
onTap: () {
if (action.dismissOnPress) {
Navigator.of(context).pop();
}
action.onPressed(context);
},
child: Padding(
padding: const EdgeInsets.all(16.0),
child: Row(
children: [
if (action.leading != null) ...[
action.leading!,
const SizedBox(width: 15),
],
Expanded(
child: DefaultTextStyle(
style: defaultTextStyle,
textAlign: action.leading != null
? TextAlign.start
: TextAlign.center,
child: action.label,
),
),
),
if (action.trailing != null) ...[
const SizedBox(width: 10),
action.trailing!,
if (action.trailing != null) ...[
const SizedBox(width: 10),
action.trailing!,
],
],
],
),
),
),
);
}),
],
);
}),
],
),
),
),
);
Expand Down