62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
| import 'package:flutter/cupertino.dart';
 | |
| import 'package:flutter/material.dart';
 | |
| 
 | |
| class AdaptiveDialogAction extends StatelessWidget {
 | |
|   final VoidCallback? onPressed;
 | |
|   final bool autofocus;
 | |
|   final Widget child;
 | |
|   final bool bigButtons;
 | |
| 
 | |
|   const AdaptiveDialogAction({
 | |
|     super.key,
 | |
|     required this.onPressed,
 | |
|     required this.child,
 | |
|     this.autofocus = false,
 | |
|     this.bigButtons = false,
 | |
|   });
 | |
| 
 | |
|   @override
 | |
|   Widget build(BuildContext context) {
 | |
|     final theme = Theme.of(context);
 | |
|     switch (theme.platform) {
 | |
|       case TargetPlatform.android:
 | |
|       case TargetPlatform.fuchsia:
 | |
|       case TargetPlatform.linux:
 | |
|       case TargetPlatform.windows:
 | |
|         if (bigButtons) {
 | |
|           return Padding(
 | |
|             padding: const EdgeInsets.symmetric(vertical: 8.0),
 | |
|             child: SizedBox(
 | |
|               width: double.infinity,
 | |
|               child: ElevatedButton(
 | |
|                 style: ElevatedButton.styleFrom(
 | |
|                   backgroundColor: autofocus
 | |
|                       ? theme.colorScheme.primary
 | |
|                       : theme.colorScheme.surfaceBright,
 | |
|                   foregroundColor: autofocus
 | |
|                       ? theme.colorScheme.onPrimary
 | |
|                       : theme.colorScheme.primary,
 | |
|                 ),
 | |
|                 onPressed: onPressed,
 | |
|                 autofocus: autofocus,
 | |
|                 child: child,
 | |
|               ),
 | |
|             ),
 | |
|           );
 | |
|         }
 | |
|         return TextButton(
 | |
|           onPressed: onPressed,
 | |
|           autofocus: autofocus,
 | |
|           child: child,
 | |
|         );
 | |
|       case TargetPlatform.iOS:
 | |
|       case TargetPlatform.macOS:
 | |
|         return CupertinoDialogAction(
 | |
|           onPressed: onPressed,
 | |
|           isDefaultAction: autofocus,
 | |
|           child: child,
 | |
|         );
 | |
|     }
 | |
|   }
 | |
| }
 |