You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
cloudsolutions-atoms/lib/views/widgets/equipment/device_button.dart

85 lines
3.2 KiB
Dart

import 'package:flutter/material.dart';
import '../../../controllers/localization/localization.dart';
import '../../../models/device/device.dart';
import '../../../models/subtitle.dart';
import '../../app_style/colors.dart';
import '../../app_style/sizing.dart';
import 'single_device_picker.dart';
class DeviceButton extends StatelessWidget {
final Function(Device)? onDevicePick;
final Device? device;
const DeviceButton({Key? key, required this.device, this.onDevicePick})
: super(key: key);
@override
Widget build(BuildContext context) {
Subtitle? _subtitle = AppLocalization.of(context)?.subtitle;
return ElevatedButton(
style: ElevatedButton.styleFrom(
elevation: 0,
padding: EdgeInsets.symmetric(
horizontal: 16, vertical: device == null ? 12 : 8),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(
AppStyle.borderRadius * AppStyle.getScaleFactor(context)),
),
foregroundColor: AColors.primaryColor,
backgroundColor: AColors.inputFieldBackgroundColor,
),
child: Row(
children: [
device == null
? Expanded(
child: Padding(
padding: const EdgeInsets.symmetric(horizontal: 6),
child: Text(
_subtitle?.pickDevice ?? "",
style: Theme.of(context).textTheme.subtitle1,
textScaleFactor: AppStyle.getScaleFactor(context),
textDirection: TextDirection.rtl,
textAlign: TextAlign.left,
),
),
)
: Expanded(
child: ListTile(
contentPadding: EdgeInsets.all(0),
title: Text(
"${_subtitle?.sn ?? ""} : ${device?.serialNumber ?? ""}",
style: Theme.of(context).textTheme.subtitle1,
),
subtitle: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Divider(
color: Theme.of(context).textTheme.subtitle1?.color,
),
Text(
"${_subtitle?.brand} : ${device?.brand}",
style: Theme.of(context).textTheme.subtitle2,
),
Divider(
color: Theme.of(context).textTheme.subtitle1?.color,
),
Text(
"${_subtitle?.model} : ${device?.model}",
style: Theme.of(context).textTheme.subtitle2,
),
],
),
)),
const Icon(Icons.keyboard_arrow_down,
size: 28, color: AColors.grey3A),
],
),
onPressed: () async {
Device _device = await Navigator.of(context)
.pushNamed(SingleDevicePicker.id) as Device;
onDevicePick!(_device);
});
}
}