import 'package:cssd/models/item_model.dart'; import 'package:cssd/providers/packages.dart'; import 'package:cssd/utils/scan.dart'; import 'package:flutter/material.dart'; import 'package:font_awesome_flutter/font_awesome_flutter.dart'; import 'package:provider/provider.dart'; class AddItemBox extends StatelessWidget { const AddItemBox({ Key? key, required double deviceBlockSize, required this.values, required this.vals, required this.initialItemValue, required this.index, required this.text, // required this.scanUdi, this.iconColor, // required this.filteredItems, required this.hasRemoveButton, }) : _deviceBlockSize = deviceBlockSize, super(key: key); final double _deviceBlockSize; final TextEditingController values; // final List> vals; final List vals; final String initialItemValue; final int index; final String text; final Color? iconColor; final bool hasRemoveButton; // final List filteredItems; // final String scanUdi; @override Widget build(BuildContext context) { bool isEnabled = true; return Container( height: 150, child: Stack( children: [ Container( padding: EdgeInsets.only( right: 10, bottom: 25, left: 10, top: 10, ), decoration: BoxDecoration( border: Border( left: BorderSide(color: Colors.black, width: 2), right: BorderSide(color: Colors.grey), bottom: BorderSide(color: Colors.grey), top: BorderSide(color: Colors.grey), ), ), height: 120, child: Container( padding: EdgeInsets.symmetric(vertical: 5), // height: 65, child: Row( // width: double.infinity, crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ Icon( FontAwesomeIcons.alignLeft, color: Colors.grey, size: 7 * _deviceBlockSize, ), SizedBox( width: 4 * _deviceBlockSize, ), Expanded( // width: MediaQuery.of(context).size.width - 70, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ SizedBox( width: _deviceBlockSize, ), Text( text, style: TextStyle( fontSize: 3.5 * _deviceBlockSize, color: Colors.grey, fontWeight: FontWeight.w100, ), ), ], ), Row( children: [ Container( width: MediaQuery.of(context).size.width - (40 * _deviceBlockSize), // height: 30, child: DropdownButtonFormField( decoration: InputDecoration( contentPadding: EdgeInsets.only( left: _deviceBlockSize, ), border: InputBorder.none, ), iconSize: 7 * _deviceBlockSize, icon: Icon( FontAwesomeIcons.angleDown, color: Colors.black, ), isExpanded: true, hint: Container( // width: 100, height: 70, padding: const EdgeInsets.symmetric(horizontal: 0), child: TextFormField( controller: values, decoration: InputDecoration( contentPadding: EdgeInsets.only( bottom: 12, ), isDense: true, ), style: TextStyle( fontWeight: FontWeight.w700, color: Colors.black, fontSize: 4 * _deviceBlockSize, ), ), ), isDense: true, items: vals.map((val) { return new DropdownMenuItem( enabled: isEnabled, value: val, child: Container( child: Text( val, style: TextStyle( fontSize: 4 * _deviceBlockSize, ), ), ), ); }).toList(), onChanged: (val) { Provider.of(context, listen: false) .changeItemVal(val!, index); }, ), ), Spacer(), InkWell( onTap: () { scan().then( (String result) { if (result == 'cancel') { print('cancel'); } else if (result == 'error') { print('error'); } else if (result == 'access') { print('access'); } else { print(result); Provider.of(context, listen: false) .changeItemValByScan(result, index); isEnabled = false; } }, ); }, child: Container( padding: EdgeInsets.all(8), decoration: BoxDecoration( shape: BoxShape.circle, color: Colors.black, ), child: Icon( Icons.qr_code_scanner, size: 5 * _deviceBlockSize, color: Colors.white, ), ), ) ], ), ], ), ), ], ), ), ), Positioned( bottom: 15, right: 0, child: InkWell( onTap: () { Provider.of(context, listen: false) .addItemVal(); }, child: Container( padding: EdgeInsets.all(3), decoration: BoxDecoration( shape: BoxShape.circle, color: iconColor, ), child: Icon( Icons.add, color: Colors.white, ), ), ), ), if (hasRemoveButton) Positioned( bottom: 15, right: 50, child: InkWell( onTap: () { Provider.of(context, listen: false) .removeItemVal(); }, child: Container( padding: EdgeInsets.all(3), decoration: BoxDecoration( shape: BoxShape.circle, color: iconColor, ), child: Icon( Icons.remove, color: Colors.white, ), ), ), ), ], ), ); } }