InkWell的onTap问题

来源:13-4 搜索接口系分与搜索Dao层的实现【Dao层设计】

鸡毛哥

2020-01-07

InkWell点击函数onTap,设置成async之后,连续点击会报错
E/flutter (22672): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: FormatException: Unexpected end of input (at character 1)
E/flutter (22672):
E/flutter (22672): ^
E/flutter (22672):
E/flutter (22672): #0 _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1394:5)
E/flutter (22672): #1 _ChunkedJsonParser.close (dart:convert-patch/convert_patch.dart:512:7)
E/flutter (22672): #2 _parseJson (dart:convert-patch/convert_patch.dart:32:10)
E/flutter (22672): #3 JsonDecoder.convert (dart:convert/json.dart:495:36)
E/flutter (22672): #4 JsonCodec.decode (dart:convert/json.dart:153:41)
E/flutter (22672): #5 SearchDao.fetch (package:flutter_trip/dao/search_dao.dart:16:33)
E/flutter (22672):
E/flutter (22672): #6 _SearchPageState.build. (package:flutter_trip/pages/search_page.dart:31:34)
E/flutter (22672): #7 _InkResponseState._handleTap (package:flutter/src/material/ink_well.dart:705:14)
E/flutter (22672): #8 _InkResponseState.build. (package:flutter/src/material/ink_well.dart:788:36)
E/flutter (22672): #9 GestureRecognizer.invokeCallback (package:flutter/src/gestures/recognizer.dart:182:24)
E/flutter (22672): #10 TapGestureRecognizer.handleTapUp (package:flutter/src/gestures/tap.dart:486:11)
E/flutter (22672): #11 BaseTapGestureRecognizer._checkUp (package:flutter/src/gestures/tap.dart:264:5)
E/flutter (22672): #12 BaseTapGestureRecognizer.acceptGesture (package:flutter/src/gestures/tap.dart:236:7)
E/flutter (22672): #13 GestureArenaManager.sweep (package:flutter/src/gestures/arena.dart:156:27)
E/flutter (22672): #14 GestureBinding.handleEvent (package:flutter/src/gestures/binding.dart:222:20)
E/flutter (22672): #15 GestureBinding.dispatchEvent (package:flutter/src/gestures/binding.dart:198:22)
E/flutter (22672): #16 GestureBinding._handlePointerEvent (package:flutter/src/gestures/binding.dart:156:7)
E/flutter (22672): #17 GestureBinding._flushPointerEventQueue (package:flutter/src/gestures/binding.dart:102:7)
E/flutter (22672): #18 GestureBinding._handlePointerDataPacket (package:flutter/src/gestures/binding.dart:86:7)
E/flutter (22672): #19 _rootRunUnary (dart:async/zone.dart:1138:13)
E/flutter (22672): #20 _CustomZone.runUnary (dart:async/zone.dart:1031:19)
E/flutter (22672): #21 _CustomZone.runUnaryGuarded (dart:async/zone.dart:933:7)
E/flutter (22672): #22 _invoke1 (dart:ui/hooks.dart:273:10)
E/flutter (22672): #23 _dispatchPointerDataPacket (dart:ui/hooks.dart:182:5)
E/flutter (22672):
I/ViewRootImpl(22672): finishMotionEvent: handled = true stage=10: View Post IME stage,inputElapseTime=5 eventTime = 395391057 downTime = 395391057 title= com.cloud.flutter.flutter_trip/com.cloud.flutter.flutter_trip.MainActivity

是不支持这种asyn写法嘛?

onTap: () async{
	SearchModel model = await SearchDao
        .fetch("https://m.ctrip.com/restapi/h5api/searchapp/search?source=mobileweb&&action=autocomplete&contentType=json&keyword=长城");
    setState(() {
        print(model.data[0].url);
    });
},
写回答

1回答

CrazyCodeBoy

2020-01-07

onTap不支持这样写,建议单独提取出一个方法来实现。

1
0

Flutter从入门到进阶 实战携程网App 一网打尽核心技术

解锁Flutter开发新姿势,,系统掌握Flutter开发核心技术。

4788 学习 · 3274 问题

查看课程