diameter/lib/components/detail.dart

70 lines
2.1 KiB
Dart

import 'package:diameter/localization_keys.dart';
import 'package:flutter/material.dart';
import 'package:flutter_translate/flutter_translate.dart';
class DetailBottomRow extends StatefulWidget {
final void Function()? onCancel;
final void Function()? onAction;
final void Function()? onMiddleAction;
final String actionTextKey;
final String middleActionTextKey;
final IconData actionIcon;
final IconData middleActionIcon;
const DetailBottomRow(
{Key? key,
required this.onCancel,
required this.onAction,
this.onMiddleAction,
this.actionTextKey = LocalizationKeys.general_save,
this.actionIcon = Icons.save,
this.middleActionTextKey = LocalizationKeys.general_saveAndClose,
this.middleActionIcon = Icons.done})
: super(key: key);
@override
_DetailBottomRowState createState() => _DetailBottomRowState();
}
class _DetailBottomRowState<T> extends State<DetailBottomRow> {
@override
Widget build(BuildContext context) {
return BottomAppBar(
child: Padding(
padding: const EdgeInsets.all(10.0),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
ElevatedButton.icon(
onPressed: widget.onCancel,
icon: const Icon(
Icons.close,
size: 18.0,
),
label: Text(translate(LocalizationKeys.general_cancel).toUpperCase()),
),
widget.onMiddleAction != null
? ElevatedButton.icon(
onPressed: widget.onMiddleAction,
icon: Icon(
widget.middleActionIcon,
size: 18.0,
),
label: Text(translate(widget.middleActionTextKey)),
)
: const Spacer(),
ElevatedButton.icon(
onPressed: widget.onAction,
icon: Icon(
widget.actionIcon,
size: 18.0,
),
label: Text(translate(widget.actionTextKey)),
),
],
),
),
);
}
}