Умножьте значения ЦОД и пользовательского ввода в другом ЦОД и отобразите значение в третьем флаттере ЦОД.
У меня есть таблица данных, динамически заполняемая из коллекции firebase. Есть название предмета и цена, я хочу, чтобы пользователь вводил количество, и общая сумма (цена * количество) автоматически рассчитывается в другом центре данных. Я не уверен, как добавить texteditingcontroller к каждому количеству для каждой базы данных. Когда я попытался добавить TextEditingController, он применился ко всем дата-центрам. Мне нужно выполнить расчет для каждого символа данных.
class _FeedTablesState extends State<FeedTables> {
final myController = TextEditingController();
void _printLatestValue() {
print('Second text field: ${myController.text}');
}
@override
void initState() {
super.initState();
// Start listening to changes.
myController.addListener(_printLatestValue);
}
@override
Widget _buildBody(BuildContext context) {
return Material(
child: StreamBuilder<QuerySnapshot>(
stream: FirebaseFirestore.instance.collection('Items').snapshots(),
builder: (context, snapshot) {
if (!snapshot.hasData) return LinearProgressIndicator();
return DataTable2(
columns: [
DataColumn(label: Text('Name')),
DataColumn(label: Text('Price ')),
DataColumn(label: Text('Quantity')),
DataColumn(label: Text('Total')),
// DataColumn(label: Text('Rapper\nname')),
],
rows: _buildList(context, snapshot.data!.docs)
);
},
),
);
}
List<DataRow> _buildList(BuildContext context, List<DocumentSnapshot> snapshot) {
return snapshot.map((data) => _buildListItem(context, data)).toList();
}
DataRow _buildListItem(BuildContext context, DocumentSnapshot data) {
final record = Record.fromSnapshot(data);
return DataRow(cells: [
DataCell(Text(record.name.toString())),
DataCell(Text(record.price.toString())),
DataCell(TextField(
controller: myController,
maxLength: 4,
decoration: InputDecoration(
labelText: 'Qty',
labelStyle: TextStyle(fontSize: 9),
counterText: "",
),
),),
DataCell(Text((record.price.toString()))),
// DataCell(Text(record.total_quantity.toString())),
]);
}
@override
Widget build(BuildContext context) {
return _buildBody(context);
}
}
class Record {
final String name;
final String price;
final String quantity;
final DocumentReference reference;
Record.fromMap(Map<String, dynamic> map, {required this.reference})
: assert(map['name'] != null),
assert(map['price'] != null),
assert(map['quantity'] != null),
name = map['name'],
price = map['price'],
quantity = map['quantity'];
Record.fromSnapshot(DocumentSnapshot snapshot)
: this.fromMap(snapshot.data() as Map<String, dynamic>, reference: snapshot.reference);
@override
String toString() => "Record<$name:$price:$quantity:>";
}