I have 2 StatefulWidget classes. One of them is a order class and other is orderlist class. In orderlist, I have many of orders. Problem is, I want to access a value of order from orderlist. Order codes:
class OrderWidget extends StatefulWidget {
final TextEditingController priceController = TextEditingController();
OrderWidget({Key? key}) : super(key: key);
@override
_OrderWidgetState createState() => _OrderWidgetState();
}
class _OrderWidgetState extends State<OrderWidget> {
List<String> products = ["ürün 1", "ürün 2", "ürün 3"];
String selectedValue = "ürün 1";
TextEditingController pieceController = TextEditingController();
TextEditingController noteController = TextEditingController();
calculateTotal(String price) {
var piece = pieceController.text;
if (piece.isEmpty) {
if (price.isNotEmpty) {
var v = int.parse(price);
setState(() {
total += v;
});
}
} else if (price.isNotEmpty) {
var v = int.parse(price);
var _piece = int.parse(piece);
setState(() {
total += v * _piece;
});
}
}
@override
Widget build(BuildContext context) {
return Container(
width: MediaQuery.of(context).size.width * .9,
child: Card(
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Ürün:",
style: TextStyle(fontSize: 20),
),
SizedBox(
width: MediaQuery.of(context).size.width * .04,
),
CustomDropdownMenu(
defaultValue: selectedValue, values: products)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Adet:",
style: TextStyle(fontSize: 20),
),
SizedBox(
width: MediaQuery.of(context).size.width * .04,
),
Container(
height: MediaQuery.of(context).size.height * .1,
width: MediaQuery.of(context).size.width * .4,
margin: EdgeInsets.only(
top: MediaQuery.of(context).size.height * .04),
child: TextField(
controller: pieceController,
keyboardType: TextInputType.number,
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide:
BorderSide(color: Colors.greenAccent, width: 5.0),
),
enabledBorder: OutlineInputBorder(),
hintText: 'Adet',
),
),
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Not:",
style: TextStyle(fontSize: 20),
),
SizedBox(
width: MediaQuery.of(context).size.width * .04,
),
Container(
height: MediaQuery.of(context).size.height * .1,
width: MediaQuery.of(context).size.width * .4,
margin: EdgeInsets.only(
top: MediaQuery.of(context).size.height * .04),
child: TextField(
controller: noteController,
keyboardType: TextInputType.multiline,
minLines: 1,
maxLines: 3,
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide:
BorderSide(color: Colors.greenAccent, width: 5.0),
),
enabledBorder: OutlineInputBorder(),
hintText: 'Not',
),
),
)
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
"Fiyat:",
style: TextStyle(fontSize: 20),
),
SizedBox(
width: MediaQuery.of(context).size.width * .04,
),
Container(
height: MediaQuery.of(context).size.height * .1,
width: MediaQuery.of(context).size.width * .4,
margin: EdgeInsets.only(
top: MediaQuery.of(context).size.height * .04),
child: TextField(
controller: widget.priceController,
onSubmitted: ((value) {
calculateTotal(value);
}),
keyboardType: TextInputType.number,
decoration: InputDecoration(
focusedBorder: OutlineInputBorder(
borderSide:
BorderSide(color: Colors.greenAccent, width: 5.0),
),
enabledBorder: OutlineInputBorder(),
hintText: 'Fiyat',
),
),
)
],
),
],
),
),
);
}
}
I have a list of that widget inside orderlist class. I want to access texteditingcontrollers of order. I tried to put a texteditingcontroller to constructor but I couldn't call it. What I want is exactly that:
for(var order in orderlistwidget){
print(order.priceController);
}
I want to perform that code but how can I reach controllers?