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/pentry/pentry_calibration_tool_for...

90 lines
3.4 KiB
Dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/pantry/calibration_tools.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/views/widgets/date_and_time/date_picker.dart';
import 'package:test_sa/views/widgets/pentry/auto_complete_fields/auto_complete_devices_field.dart';
import '../../../new_views/app_style/app_color.dart';
class PentryCalibrationToolForm extends StatefulWidget {
final List<CalibrationTool> models;
final bool enableValidate;
const PentryCalibrationToolForm({Key key, this.models, this.enableValidate}) : super(key: key);
@override
State<PentryCalibrationToolForm> createState() => _PentryCalibrationToolFormState();
}
class _PentryCalibrationToolFormState extends State<PentryCalibrationToolForm> {
@override
Widget build(BuildContext context) {
final userProvider = Provider.of<UserProvider>(context);
return ListView.builder(
itemCount: widget.models.length + 1,
padding: EdgeInsets.only(top: 16.toScreenHeight),
itemBuilder: (context, index) {
if (index == widget.models.length) {
return AppFilledButton(
label: context.translation.addAsset,
maxWidth: true,
textColor: Colors.white,
buttonColor: context.isDark ? AppColor.neutral60 : AppColor.neutral50,
onPressed: () {
widget.models.add(CalibrationTool());
setState(() {});
},
);
}
final model = widget.models[index];
return Container(
padding: const EdgeInsets.all(16),
margin: EdgeInsets.only(bottom: 16.toScreenHeight),
decoration: BoxDecoration(
color: Theme.of(context).cardColor,
borderRadius: BorderRadius.circular(20),
boxShadow: [BoxShadow(color: Colors.black.withOpacity(0.03), blurRadius: 14)],
),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
"${context.translation.asset} ${index + 1}".heading5(context),
"trash".toSvgAsset(height: 20, width: 15).onPress(() {
widget.models.remove(model);
setState(() {});
}),
],
),
16.height,
AutoCompleteDeviceNumberField(
initialValue: model.assetsNumber,
hospitalId: userProvider.user.clientId,
onPick: (number) {
model.assetsNumber = number;
},
),
8.height,
ADatePicker(
label: context.translation.calibrationDate,
date: model.dataOfTesting,
onDatePicker: (date) {
model.dataOfTesting = date;
setState(() {});
},
),
],
),
);
},
);
}
}