मेरे पास नीचे की तरह 3 टेक्स्टफॉर्मफिल्ड है:

enter image description here

और यह उपरोक्त 3 टेक्स्टफॉर्मफिल्ड के लिए कोड है:

class _ProposalDataInsuranceState extends State<ProposalDataInsurance> {
  
  final _totalPremiController = TextEditingController();
  final _premiPokokController = TextEditingController();
  final _premiTopUpController = TextEditingController();

  @override
  void dispose() {
    _totalPremiController.dispose();
    _premiPokokController.dispose();
    _premiTopUpController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Column(
      children: [
        TextFormField(
          textInputAction: TextInputAction.next,
          style:
          textMediumColor(Modular.get<ColorPalettes>().black),
          controller: _totalPremiController,
          maxLines: 1,
          keyboardType: TextInputType.number,
          inputFormatters: [
            FilteringTextInputFormatter.digitsOnly,
            CurrencyInputFormatter(maxDigits: 16),
          ],
          decoration: InputDecoration(
            border: InputBorder.none,
            focusedBorder: InputBorder.none,
            enabledBorder: InputBorder.none,
            errorBorder: InputBorder.none,
            disabledBorder: InputBorder.none,
            contentPadding:
            EdgeInsets.only(bottom: 11, top: 11, right: 15),
            hintText: '0',
            hintStyle:
            textMediumColor(Modular.get<ColorPalettes>().black),
          ),
        ),
        TextFormField(
          controller: _premiPokokController,
          textInputAction: TextInputAction.next,
          style: textMediumColor(Modular.get<ColorPalettes>().black),
          maxLines: 1,
          keyboardType: TextInputType.number,
          inputFormatters: [
            FilteringTextInputFormatter.digitsOnly,
            CurrencyInputFormatter(maxDigits: 16),
          ],
          decoration: InputDecoration(
            border: InputBorder.none,
            focusedBorder: InputBorder.none,
            enabledBorder: InputBorder.none,
            errorBorder: InputBorder.none,
            disabledBorder: InputBorder.none,
            contentPadding:
            EdgeInsets.only(bottom: 11, top: 11, right: 15),
            hintText: '0',
            hintStyle:
            textMediumColor(Modular.get<ColorPalettes>().black),
          ),
        ),
        TextFormField(
          controller: _premiTopUpController,
          textInputAction: TextInputAction.done,
          style: textMediumColor(Modular.get<ColorPalettes>().black),
          maxLines: 1,
          keyboardType: TextInputType.number,
          inputFormatters: [
            FilteringTextInputFormatter.digitsOnly,
            CurrencyInputFormatter(maxDigits: 16),
          ],
          decoration: InputDecoration(
            border: InputBorder.none,
            focusedBorder: InputBorder.none,
            enabledBorder: InputBorder.none,
            errorBorder: InputBorder.none,
            disabledBorder: InputBorder.none,
            contentPadding:
            EdgeInsets.only(bottom: 11, top: 11, right: 15),
            hintText: '0',
            hintStyle:
            textMediumColor(Modular.get<ColorPalettes>().black),
          ),
        ),
      ],
    );
  }
}

प्रश्न है, Premi Topup के लिए सत्यापन (Total Premi - Premi Pokok) के साथ डिफ़ॉल्ट मान कैसे सेट करें?

उदाहरण के लिए:

  1. अगर मैं 50000 को Total Premi में जोड़ता हूं, तो Premi Pokok का मान अभी भी 0 है क्योंकि Total Premi - Premi Pokok 50000 है - 0 = 0
  2. अगर मैं Total Premi में 50000 और Premi Pokok में 40000 जोड़ता हूं, तो Premi Pokok का मान 10000 है क्योंकि Total Premi - Premi Pokok 50000 है - 40000 = 10000
  3. और Premi Topup अभी भी उपयोगकर्ता द्वारा मान को संपादित कर सकता है, हालांकि Total Premi - Premi Pokok से सत्यापन के साथ डिफ़ॉल्ट मान है।
0
R Rifa Fauzi Komara 28 जिंदा 2021, 12:52

2 जवाब

सबसे बढ़िया उत्तर

आप श्रोताओं को अपने टेक्स्ट फ़ील्ड नियंत्रकों पर सेट कर सकते हैं।

आप इसे निम्न की तरह कर सकते हैं:

  ...
  void setPremiTopUpDefault() {
    final totalPremi = int.tryParse(_totalPremiController.text);
    final premiPokok = int.tryParse(_premiPokokController.text);
    if (totalPremi != null && premiPokok != null) {
      _premiTopUpController.text = (totalPremi - premiPokok).toString();
    }
  }

  @override
  void initState() {
    super.initState();
    _totalPremiController.addListener(setPremiTopUpDefault);
    _premiPokokController.addListener(setPremiTopUpDefault);
  }

  @override
  void dispose() {
    _totalPremiController.removeListener(setPremiTopUpDefault);
    _premiPokokController.removeListener(setPremiTopUpDefault);
    ...
  }
  ...
1
Ali Alizadeh 28 जिंदा 2021, 13:53

Totalpremitopup के परिवर्तन पर

उपयोग

सेटस्टेट (() {

Var a=int.parse(totalpremipopup.text)

Var b=int.parse(Premipokpok.text)

वर सी=ए-बी

Premitopup.text=c.toString ()

})

इसी तरह premiokok . में अपरिवर्तित के लिए

उपयोग

सेटस्टेट (() {

Var a=int.parse(totalpremipopup.text)

Var b=int.parse(Premipokpok.text)

वर सी=ए-बी

Premitopup.text=c.toString ()

})

मेरी आशा है कि इससे काम हो जाए

1
SWAG Assassin YT 28 जिंदा 2021, 13:30