首页 > 解决方案 > 使用新的 TextField 值命中 API

问题描述

我想根据Textformfield的值一次又一次地点击一个api,

这是我到目前为止所做的

文本表单域

Container(
                width: 100.w,
                margin: EdgeInsets.symmetric(vertical: 1.0.h,horizontal: 1.0.h ),
                child: Form(
                  key: _EBILL,
                  child: TextFormField(
                      controller: EBILL,
                      onChanged: (val) {
                        setState(() {
                          formText = val;
                        });
                        return formText;
                      },
                    // enabled: false,
                    //   readOnly: true,
                      keyboardType: TextInputType.numberWithOptions(
                          signed: true, decimal: true),
                      decoration: InputDecoration(
                        hintText: 'Biller',
                        suffixIcon: SizedBox(
                          height: 6.h,
                          width: 80,
                          child: FlatButton(
                            color: Colors.red,
                            onPressed: () async {
                              MenuChoose();
                            },
                            child: Text(
                              'Biller',
                              textAlign: TextAlign.center,
                              style: TextStyle(color: Colors.white),
                            ),
                          ),
                        ),
                        border: OutlineInputBorder(),
                      ),
                      textInputAction: TextInputAction.done,
                      // autofocus: true,
                      validator: (val) {
                        if (val.isEmpty) return 'Pilih Biller';
                        return null;
                      }),
                )
            ),

API命中的未来

Future<List<Elist>> _getHargaEmon() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    var sessec = prefs.getString('sessec');
    var pin = prefs.getString('pin');

    var provider = checkProvider(EBILL.text);
    var data = await Harga(provider, pin, sessec);
    var jsonData = json.decode(data);
    var jsonProduk = jsonData["VALUE"]["dt_produk"];
    List<Elist> elist = [];

    for (var u in jsonProduk) {
      Elist eList = Elist(u["info_produk"], u["info_harga"], u["info_kode"]);
      elist.add(eList);
    }
    // print(harpul);
    return elist;
  }

当我们自己输入提供者数据时,它确实可以正常工作,但我想要的是人们只需要选择提供者,它就会自己出现。

这是我所做的

我创建了一个 showModalBottomSheet 并用提供者的列表填充屏幕,当单击列表时它会自动更改 EBILL 值,但什么也没发生。

标签: flutterdart

解决方案


推荐阅读