Flutter 55: 日常问题小结 (二)

作者: 阿策神奇 | 来源:发表于2019-07-29 19:35 被阅读14次

      小菜作为初学者,基础薄弱,继续整理日常小问题;

问题一:依赖版本冲突

      Flutter 的更新很频繁,而我们本地的环境可能会是一个较低的稳定版本,而我们使用的插件可能版本较高,在集成时可能会遇到如下冲突;

尝试一:

      在 pub.dev 中找到问题的插件,根据更新列表逐个低版本尝试,注意需要替换成固定版本(无 ^),直到正常使用版本,虽然靠谱但是可能尝试次数很多;

尝试二:

  1. 将出问题的插件版本更换为 any,如:json_annotation: any
  2. Package get 更新插件,自动匹配;
  3. pubspec.lock 文件中找到问题插件,系统会自动匹配安全版本(小菜测试可能与逐个排查的版本不一致);
  4. pubspec.yaml 中替换这个安全版本即可,注意:any 只是用来辅助查找安全版本,在实际项目中不建议用,可能会出现适配问题;

尝试三:

      最根本的解决方法是升级本地 SDK 版本,这样成本较高,可能会引起其他插件的兼容问题,需整体处理;

问题二:新页面初始化对话框失败

      小菜因需求,准备打开新的页面时先弹出对话框供用户选择,小菜在 initState 方法初始化,但一直提示页面未初始化,弹框位置错误;

尝试一:

      小菜根据错误提示将弹窗位置调整到 didChangeDependenciesbuild 中且异步尝试,同样失败,提示需要父类组件构建成功之后才可以构建子组件;

尝试二:

      小菜前几天学习生命周期,稍稍看了一点 WidgetsBinding,用作绑定 Widget 框架和 Flutter engine 的桥梁;通过 addPostFrameCallback 监听 Frame 绘制最后一帧,同时可以获取元素大小;且整个生命周期只会执行一次;

WidgetsBinding widgetsBinding = WidgetsBinding.instance;

@override
void didChangeDependencies() {
  super.didChangeDependencies();
  widgetsBinding.addPostFrameCallback((callback) {
    showDialog(
        context: context,
        barrierDismissible: false,
        builder: (BuildContext context) {
          return GenderChooseDialog(
              title: '小哥哥小姐姐请选择',
              onBoyChooseEvent: () => Navigator.pop(context),
              onGirlChooseEvent: () => Navigator.pop(context));
        });
  });
}

问题三:列表居中

      小菜在跟朋友聊天时讨论如何如何将列表在屏幕居中,小菜尝试了 Center 内嵌套 ListView 但不能居中;

      查了一下资料和源码,直接设置 ListViewshrinkWrap=true 即可;shrinkWrap 可以设置 ListView 只占用所需要的空间;

Widget _listItemWid(values) {
  return Center(
      child: ListView.builder(
          shrinkWrap: true,
          scrollDirection: Axis.horizontal,
          physics: const AlwaysScrollableScrollPhysics(),
          padding: const EdgeInsets.all(6.0),
          itemCount: values == null ? 0 : values.length,
          itemBuilder: (context, i) {
            return Padding(
                padding: EdgeInsets.symmetric(horizontal: 10.0),
                child: Icon(values[i]));
          }));
}

      小菜还处于基础学习阶段,有很多问题待研究;如有错误请多多指导!

阿策小和尚

相关文章

  • Flutter 55: 日常问题小结 (二)

    小菜作为初学者,基础薄弱,继续整理日常小问题; 问题一:依赖版本冲突 Flutter 的更新很频繁,而我们本地的环...

  • Flutter使用TabBar

    Flutter使用TabBar问题小结

  • Flutter 开发日常问题小结

    1.couldn't find “libflutter.so“ 场景:Flutter 工程中引入了一个三方库,只支...

  • Flutter 40: 日常问题小结 (一)

    小菜作为一个小学生在实际操作中遇到很多问题,相对比较常见,小菜来整理记录一下。 问题一:嵌套权重异常 小菜做 An...

  • Flutter问题小结

    前言 本篇主要记录一下在学习Flutter的过程中遇到的一些问题,及解决方法,菜鸟学习,持续更新中... 1. F...

  • Flutter日常问题

    该文章持续记录下自己在Flutter开发中遇到的日常问题,好记性不如烂笔头,之前遇到的问题如果不养成记录的习惯,下...

  • Flutter安装问题小结

    前言 Flutter 推出后的这几年也变得越来越火,越来越被很多公司采纳,俨然已经成为移动开发人员的标配技能了,学...

  • 2019-01-10(flutter 环境搭建 macos)

    flutter 环境搭建小结 参考:https://flutter.io/docs/get-started/ins...

  • Flutter 日常问题干货

    Android运行Flutter项目时,编译提示couldn't find "libflutter.so"

  • Flutter使用TabBar问题小结

    此章总结一下在Flutter项目中,使用TabBar遇到的一些问题。 TabBar取消下划线 TabBar自带下划...

网友评论

    本文标题:Flutter 55: 日常问题小结 (二)

    本文链接:https://www.haomeiwen.com/subject/wlmylctx.html