Flutter 在flatter中单击按钮时如何将参数传递给web服务

Flutter 在flatter中单击按钮时如何将参数传递给web服务,flutter,Flutter,我对颤振开发还不熟悉。你们能告诉我当点击按钮时如何将参数传递到url吗。多谢各位 import 'package:flutter/material.dart'; import 'package:minerva_admin/Homescreen.dart'; import 'dart:async'; import 'dart:convert'; import 'package:http/http.dart' as http; class Login e

我对颤振开发还不熟悉。你们能告诉我当点击按钮时如何将参数传递到url吗。多谢各位

 import 'package:flutter/material.dart';
    import 'package:minerva_admin/Homescreen.dart';
    import 'dart:async';
    import 'dart:convert';
    import 'package:http/http.dart' as http;


    class Login extends StatefulWidget {
      @override
      State<StatefulWidget> createState() {
        return new LoginState();
      }

    }


    class LoginState extends State<Login> {

      final TextEditingController _userController = new TextEditingController();

      final String url = "http://192.155.1.40:8088/restaurants";
      List data;



      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: new AppBar(
            title: new Text("Minerva Money"),
            centerTitle: true,
            backgroundColor: Colors.green,
          ),

          backgroundColor: Colors.white,

          body: new Container(
            alignment: Alignment.topCenter,
            child: new ListView(
              children: <Widget>[
                //image/profi

                //form
                new Container(
                  margin: const EdgeInsets.only(top: 100.0),
                  child: new Column(
                    children: <Widget>[

                      new TextField(
                        controller: _userController,
                        decoration: new InputDecoration(
                            hintText: 'Enter Email/Mobile Number',
                            icon: new Icon(Icons.person)
                        ),
                      ),


                      new Padding(padding: new EdgeInsets.all(10.5)), //add padding

                      new Center(
                        // Login button

                        child: new RaisedButton(

                             onPressed: (){
                          getSWData(_userController.toString());
                        },
                            color: Colors.green,
                            child: new Text("Login",
                                style: new TextStyle(color: Colors.white,
                                    fontSize: 16.9))),


                        // Clear button


                      )
                    ],
                  ),

                ), //form ends here

                new Padding(
                    padding: const EdgeInsets.all(14.0)),


              ],
            ),
          ),


        );
      }
Future<String> getSWData(String email) async {
        var res = await http.get(
            Uri.encodeFull(url), headers: {"Accept": "application/json"});
        print("response" + "$url");
        setState(() {
          var resBody = json.decode(res.body);

          // data = resBody["restos_cities"];
          print("response" + "$resBody");
        });
        return "succees";
      }

    }
导入“包装:颤振/材料.省道”;
导入“package:minerva_admin/Homescreen.dart”;
导入“dart:async”;
导入“dart:convert”;
将“package:http/http.dart”导入为http;
类登录扩展StatefulWidget{
@凌驾
状态createState(){
返回新的LoginState();
}
}
类LoginState扩展状态{
最终文本编辑控制器_userController=新文本编辑控制器();
最终字符串url=”http://192.155.1.40:8088/restaurants";
列出数据;
@凌驾
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(
标题:新文本(“Minerva货币”),
标题:对,
背景颜色:Colors.green,
),
背景颜色:Colors.white,
主体:新容器(
对齐:alignment.topCenter,
子:新列表视图(
儿童:[
//图像/profi
//形式
新容器(
边距:仅限常量边集(顶部:100.0),
子:新列(
儿童:[
新文本字段(
控制器:_userController,
装饰:新的输入装饰(
hintText:'输入电子邮件/手机号码',
图标:新图标(Icons.person)
),
),
新填充(填充:newedgeinsets.all(10.5)),//添加填充
新中心(
//登录按钮
孩子:新升起的按钮(
已按下:(){
getSWData(_userController.toString());
},
颜色:颜色。绿色,
子项:新文本(“登录”,
样式:新文本样式(颜色:Colors.white,
字体大小:16.9),
//清除按钮
)
],
),
),//表单到此结束
新填料(
填充:常量边集所有(14.0)),
],
),
),
);
}
未来getSWData(字符串电子邮件)异步{
var res=wait http.get(
encodeFull(url),头:{“Accept”:“application/json”});
打印(“响应”+“$url”);
设置状态(){
var resBody=json.decode(res.body);
//数据=resBody[“restos_cities”];
打印(“响应”+“$resBody”);
});
返回“成功者”;
}
}

有谁能解释一下,当点击buton获取数据时,如何将“email”参数中的textfield数据发送到web服务。先谢谢你。我在我的pubspec文件中添加了http:^0.11.3+16。

首先,您必须启用
RaisedButton的
onPressed
属性。在这里,您必须调用一些函数来传递您定义的
textededitingcontroller
中的电子邮件参数:

onPressed: () {
  yourFunction(_userController.text.toString());
},

然后,在“yourFunction”中使用从
文本字段捕获的参数实现webservice调用

谢谢您的响应。如何将参数传递到url?。我编辑了我的代码,通常“get”操作将参数附加到url的末尾(一个简单的连接),但我不知道格式,因为我不知道您的Web服务的规范。为了正确地获取输入文本,应该调用“getSWData(_userController.text.toString())”而不是“getSWData(_userController.toString())”