记录一次flutter编程中的报错以及解决
type '_HashMap ’ is not a subtype of type 'Map ’
在做Dio的get请求的时候弹出错误提示type ‘_HashMap<dynamic, dynamic>’ is not a subtype of type ‘Map<String, dynamic>’。
详情:
这是源代码
Map params = HashMap();
params['site'] = site;
params['page'] = page;
params['size'] = size;
return dio.get(Api.GET_NEWS, queryParameters: params);
改错:
给HashMap加入类型就能解决问题
Dio dio = Dio();
Map params = HashMap<String, dynamic>();
params['site'] = site;
params['page'] = page;
params['size'] = size;
return dio.get(Api.GET_NEWS, queryParameters: params);
flutter把一个组件放到屏幕的下方
需要把一个组件放到屏幕的下面,直接用Alignment是没有效果的,因为没有充满屏幕的所有空间
解决方案:
Flex/Column+Expand效果就不错
或者用Stack+Position定位
ListView点击跳转下一个界面返回有问题
ListView点击跳转到下一个界面的时候,点击返回键,会向上跳转两个界面
解决方案:
这是原来的代码:
child: ListView.builder(
itemCount: _chooseNewsList.length,
itemBuilder: (context, i){
return InkWell(
onTap:() {
Navigator.of(context).push(
MaterialPageRoute(builder: (context) => NewsDetail(_chooseNewsList[i])),
);
},
child: NewsItem(_chooseNewsList[i]),
);
},
),
这是修改过后的代码
child: ListView.builder(
itemCount: _chooseNewsList.length,
itemBuilder: (context, i){
return InkWell(
onTap:() {
Navigator.of(this.context).push(
MaterialPageRoute(builder: (context) => NewsDetail(_chooseNewsList[i])),
);
},
child: NewsItem(_chooseNewsList[i]),
);
},
),
就是把context改成页面的Context而不是ListView里的context
SizeBox无法约束ListView的子组件宽度
在ListView中如果嵌套一个SizedBox,起不到约束效果
解决办法:
将ListView换成Column,之后约束,把想要滚动的部分用Expanded+ListView/SingleChildScrollView重新装填
找不到Scallfold
详情:The specific widget that could not find a Scaffold ancestor was:…
解决办法:
这是我在调用函数,showSheet()的时候发生的,改成showModelSheet()就好了
String is not type of List
详情:在项目中有一段返回值类似{“data”:[1,2,3]},转换List会报错
解决办法:
用JsonDecode.convert()函数,即可实现转换
Flutter: Unhandled Exception: inheritFromWidgetOfExactType(_LocalizationsScope) or inheritFromEle
详情:在initState()中显示对话框报错,flutter: Unhandled Exception: inheritFromWidgetOfExactType(_LocalizationsScope) or inheritFromElement() was called before Page.initState() completed…
解决办法:利用Future.delay()延迟执行
几个项目中用到的轮子
- flutter_svg: ^0.17.4 用来加载svg格式的图片
- flutter_html: ^0.11.1 用来解析html格式的网页
- flutter_speed_dial: ^1.2.5 自带动画可以展开的浮动标签
- share: ^0.6.3+6 分享网址
- pull_to_refresh: ^1.5.8 下拉刷新,上拉加载
- url_launcher: ^5.4.5 根据Url启动外部app
- image_gallery_saver: ^1.2.2 保存图片
- photo_view: ^0.9.2 图片浏览,配套PageView使用