mirror of
https://github.com/DefinedNet/mobile_nebula.git
synced 2025-01-18 11:17:06 +00:00
991837676a
This pulls out a component that we can use for "dangerous" operations like deleting, and styles it in one place. It also starts to move us slowly towards Material 3, with the rounded corners on these buttons in Android. Android: |Before Light|Before Dark|After Light|After Dark| |---|---|---|---| |<img width="425" alt="Android Studio 2025-01-15 14 16 36" src="https://github.com/user-attachments/assets/4823e551-6a40-48dd-9bc1-3004699b90ea" />|<img width="417" alt="Android Studio 2025-01-15 14 16 47" src="https://github.com/user-attachments/assets/df5461fd-586e-47bb-99b9-0212e63f0454" />|<img width="413" alt="Android Studio 2025-01-15 14 15 59" src="https://github.com/user-attachments/assets/d88a6225-b71a-4886-8387-e35811a3a6ec" />|<img width="418" alt="Android Studio 2025-01-15 14 16 15" src="https://github.com/user-attachments/assets/d4f23b1c-7003-4a00-b865-4a123d8fe3e9" />| iOS: |Before Light|Before Dark|After Light|After Dark| |---|---|---|---| |<img width="437" alt="Simulator 2025-01-15 15 56 26" src="https://github.com/user-attachments/assets/87c4eed3-6d07-4858-8ad8-d8c011538154" />|<img width="445" alt="Simulator 2025-01-15 15 56 36" src="https://github.com/user-attachments/assets/9dc5b174-7bc7-48ec-a3c0-61633168c31a" />|<img width="439" alt="Simulator 2025-01-15 16 05 23" src="https://github.com/user-attachments/assets/31dc9ab6-8a3c-49c7-892d-627f16e2a8cd" />|<img width="444" alt="Simulator 2025-01-15 16 05 37" src="https://github.com/user-attachments/assets/979280d6-e1f4-4d57-a86a-10bb4def729a" />|
28 lines
951 B
Dart
28 lines
951 B
Dart
import 'dart:io';
|
|
|
|
import 'package:flutter/cupertino.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class DangerButton extends StatelessWidget {
|
|
const DangerButton({Key? key, required this.child, this.onPressed}) : super(key: key);
|
|
|
|
final Widget child;
|
|
final GestureTapCallback? onPressed;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
if (Platform.isAndroid) {
|
|
return FilledButton(
|
|
onPressed: onPressed,
|
|
child: child,
|
|
style: FilledButton.styleFrom(backgroundColor: Theme.of(context).colorScheme.error));
|
|
} else {
|
|
// Workaround for https://github.com/flutter/flutter/issues/161590
|
|
final themeData = CupertinoTheme.of(context);
|
|
return CupertinoTheme(
|
|
data: themeData.copyWith(primaryColor: CupertinoColors.white),
|
|
child: CupertinoButton(
|
|
child: child, onPressed: onPressed, color: CupertinoColors.systemRed.resolveFrom(context)));
|
|
}
|
|
}
|
|
}
|