0

Flutter でフォームを作成しようとしています。ユーザーが値を入力してボタンをクリックすると、その値に対していくつかの基本的な検証が実行され、確認として AlertDialogue が表示されます。ユーザーが確認をクリックすると、API 呼び出しを試行し、結果を取得してその API 呼び出しの結果を表示し、何が起こったかをユーザーに知らせます。しかし、最初にオブジェクトに対して何らかの文字列操作を行おうとすると、Flushbar が表示されません。関数からの応答を Flushbar に出力しようとすると、これも機能しません。そもそもこの問題が発生する理由と、それを解決する最善の方法について何かアドバイスはありますか?

        Padding(
          padding: const EdgeInsets.symmetric(vertical: 15.0),
          child: ElevatedButton(
            style: ElevatedButton.styleFrom(
              textStyle: TextStyle(
                fontSize: 30,
              ),
              primary: Colors.lightGreen, // background
              onPrimary: Colors.white, // foreground
            ),
            onPressed: () {
              // Validate returns true if the form is valid, or false otherwise.
              if (_formKey.currentState.validate())
              {
                  return showDialog<void>(
                    context: context,
                    barrierDismissible: false, // user must tap button!
                    builder: (BuildContext context) {
                      return AlertDialog(
                        title: Text('Confirmation'),
                        content: SingleChildScrollView(
                          child: ListBody(
                            children: <Widget>[
                              Text('Please confirm your action'),
                              Text('Would you like to buy ' + finalValue.toString() + ' worth of merchandise'),
                            ],
                          ),
                        ),
                        actions: <Widget>[
                          TextButton(
                            child: Text('No'),
                            onPressed: () {
                              Navigator.of(context).pop();
                            },
                          ),
                          TextButton(
                            child: Text('Confirm'),
                            onPressed: ()  {
                              Navigator.of(context).pop();
                              var response = bb.trade(_character, finalValue, true); //API CALL
                              *//String resp = response.body.split(',')[1].split(':')[1];
                              //resp = resp.substring(1);
                              //resp = resp.split('.')[0];
                              //print(resp);* //The real string manipulation we want to do but then flushbar does not display
                              Flushbar(
                                title:  "Result",
                                message:  "lol"+response.body.toString(), //FLUSHBAR DOES NOT DISPLAY AT ALL
                                duration:  Duration(seconds: 5),
                              )..show(context);
                            },
                          ),
                        ],
                      );
                    },
                  );
              }
            },
            child: Text('Buy'),
          ),
        ),
4

1 に答える 1