如何将数据传递到文本字段并返回新更改的数据?



我面临以下问题。我有一个数据库,我通过state.mapFilter.maxPrice集团获取数据。我想把这个数据传输到文本字段,它将被显示。在文本字段中,我有一个计数器,它也是通过递增和递减块实现的。如何将state.mapFilter.maxPrice的值传递到文本字段,以便可以更改该值,然后返回state.mapFilter.maxPrice并更新?

主要-state.mapFilter.maxPrice是来自数据库的数据,我想在文本字段

中显示
PriceCounter(
price: state.mapFilter.maxPrice,
),

price_counter-这是小部件本身的文本字段和按钮来增加/减少值

class PriceCounter extends StatelessWidget {
PriceCounter({Key? key, required this.price}) : super(key: key);
double price;
@override
Widget build(BuildContext context) {
final CounterCubit cubit = BlocProvider.of<CounterCubit>(context);
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 21),
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
IconButton(
onPressed: () => cubit.priceFilterDecrement(),
icon: SvgPicture.asset(constants.Assets.minus),
constraints: const BoxConstraints(),
padding: EdgeInsets.zero,
),
const SizedBox(width: 20),
BlocBuilder<CounterCubit, CounterState>(
builder: (context, state) => InputFieldPrice(
price: state.priceFilterCountValue,
textStyle: constants.Styles.normalBookTextStyleWhite),
),
const SizedBox(width: 20),
IconButton(
onPressed: () => cubit.priceFilterIncrement(),
icon: SvgPicture.asset(constants.Assets.plus),
constraints: const BoxConstraints(),
padding: EdgeInsets.zero,
),
],
),
);
}
}

input_field_price-这是文本字段

class InputFieldPrice extends StatefulWidget {
final double price;
final TextStyle textStyle;
final Function(double)? onChanged;
const InputFieldPrice(
{Key? key, required this.price, required this.textStyle, this.onChanged})
: super(key: key);
@override
State<InputFieldPrice> createState() => _InputFieldPrice();
}
class _InputFieldPrice extends State<InputFieldPrice> {
final _formKey = GlobalKey<FormState>();
final _priceController = TextEditingController();
@override
void dispose() {
_priceController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return SizedBox(
width: 100,
child: Form(
key: _formKey,
child: TextFormField(
keyboardType: TextInputType.number,
controller: _priceController..text = widget.price.toStringAsFixed(2),
style: widget.textStyle,
textAlign: TextAlign.center,
decoration: InputDecoration(
prefix: Text('JC', style: widget.textStyle),
suffix: const Text(
'KWh',
style: constants.Styles.smallerBookTextStyleWhite,
),
contentPadding: EdgeInsets.zero,
border: InputBorder.none,
),
// onChanged: (value) {
//   cubit.setPrice(value);
//   double price = double.parse(value);
//   widget.onChanged!(price);
// },
),
),
);
}
}

您可以使用TextEditingController.text = <your data>在textfield中设置数据而反过来将数据设为变量;<var / getx> = TextEditingController.text

最新更新