Flutter Future <String>'不是类型'String'的子类型

时间:2020-09-25 16:16:39

标签: flutter dart future

我正在尝试执行简单的登录过程而没有成功。 一些细节:

我正在使用pub.dev中的组件:

import 'package:http/http.dart' as http;

我有一个按钮可以按下:

Widget loginBtn(BuildContext context) {
  return SizedBox(
    width: 30,
    height: 30,
    child: FlatButton(
      padding: const EdgeInsets.all(5.0),
      child: new Text(
        "login",
        style: new TextStyle(
          fontSize: 12.0,
          color: Colors.white,
          fontWeight: FontWeight.w400,
        ),
      ),
      color: Colors.red,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.circular(18.0),
      ),
      onPressed: () {
        _loginPressed(context);
      },
    ),
  );
}

在媒体上调用的方法:

void _loginPressed(context) async {
  final sended = {
    "email": "testemail@testeamil.com",
    "password": "xvbmsek330",
  };

  await login(sended).then((result) {
    //
  }).catchError((result) {}); //try to do login
}

和实现请求的未来:

Future<String> login(sended) async {
  final params = {
    "email": sended["email"],
    "password": sended["password"],
  };

  var response = await http.post(
    "http://serverurl.com/login.php",
    body: params,
  );

  if (response.statusCode == 200) {
    //success
    var general = json.decode(response.body);
  } else {
    //error management
  }
}

在这段代码中,自然会有一些在现实生活中不存在的硬编码值。 我可以与Web服务login.php正确地“对话”,因此在服务器端一切正常。 当HTTP(文件http.dart)库管理返回的数据时,麻烦就来了,我得到:

enter image description here

有人可以帮助我吗?我对“未来”元素的想法可能出了问题。

0 个答案:

没有答案