Dart/Flutter中按钮的OnPressed事件点了没反应,怎么回事?

紫凝道人 发布于 02/27 17:16
阅读 319
收藏 0
Widget createBottomSheetDialog(){
  var _ipAddress = 'Unknown';
  print("abc");

  void _getIPAddress() async {
    var url = 'https://httpbin.org/ip';
    var httpClient = new HttpClient();

// 实际运行后点击按钮,根本不会打印如下2行日志,好像压根没运行到这里
    print(url);
    print("123");

    String result;
    try {
      var request = await httpClient.getUrl(Uri.parse(url));
      var response = await request.close();
      if (response.statusCode == HttpStatus.OK) {
        var json = await response.transform(utf8.decoder).join();
        var data = jsonDecode(json);
        result = data['origin'];

      } else {
        result =
        'Error getting IP address:\nHttp status ${response.statusCode}';
      }
    } catch (exception) {
      result = 'Failed getting IP address';
    }

    setState() {
      _ipAddress = result;
    }
    print(result);
  }

  var btn = IconButton(
    onPressed: _getIPAddress,
    tooltip: 'Get IP',
    icon: Icon(Icons.cake),
  ); // This trailing comma makes auto-formatting nicer for build methods.

  return new Container(
    color: Colors.blue,
    child: new Column(
      mainAxisSize: MainAxisSize.min,
      crossAxisAlignment: CrossAxisAlignment.stretch,//填满交叉轴
      children: <Widget>[
        new Text(_ipAddress),
        new Text("111111111111111111111111111111"),
        btn,
      ],
    ),
  );
}

 

加载中
0
春暖花又开
春暖花又开

你写法不对 onPressed: () =>_getIPAddress(),

0
紫凝道人
紫凝道人

一样的,还是进不去_getIPAddress函数

紫凝道人
紫凝道人
回复 @春暖花又开 : 从Widget的实现中拿出来了,还是一样
春暖花又开
春暖花又开
回复 @紫凝道人 : 你写法不对Widget里面不能包含方法 把void提取出来
紫凝道人
紫凝道人
回复 @春暖花又开 : 可以显示按钮
春暖花又开
春暖花又开
UI能显示出按钮吗
0
紫凝道人
紫凝道人

我在每一行都加了日志,发现居然是因为这一句卡住了,它之前的都OK,到它就卡住了

var httpClient = new HttpClient();
0
紫凝道人
紫凝道人

@春暖花又开 改用dio代替内置http就可以了,github上据说是dart的bug,dart的bug。。。

0
t
tkhlo

flutter_osc抄来的,可以参考一下:

new IconButton(
            icon: new Icon(Icons.send),
            onPressed: () {
              // 回复楼主
              showReplyBottomView(context, true);
            },
          )

返回顶部
顶部