记录一次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使用
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值