当前位置:   article > 正文

Flutter升级空安全版本注意事项_flutter 升级3.0填坑 resizetoavoidbottompadding: true,

flutter 升级3.0填坑 resizetoavoidbottompadding: true,

FlutterBoost发布了3.0,试着把Flutter升级到了2.5空安全版本,升级的过程几乎是逐行更改代码,对项目影响很大,遇到的一些坑分享给大家

  1. 空类型
    ○ 声明时可为空的变量需要加?
UserEntity? user;
user?.userId = 759896253;
user = UserEntity();
user!.nickname = "测试用名";
  • 1
  • 2
  • 3
  • 4

○ 构造方法要在方法体外为不能为空的成员变量赋值,如下的msg字段,而code、data、error就不必如此
要在构造方法执行前,保证当前类中非dynamic、late标识的成员变量都不为空

class Test{
  int code = -1;
  String msg;
  dynamic data;
  late String error;
  Test(): msg = "" {
    
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

○ 组件方法中可选参数(非空类型)要么加默认值,要么加required注解标明必传,@required => required
final int index;
CoursesSubPage({this.index = 1});
CoursesSubPage({required this.index});
○ 继承JsonConvert的Entity需要加默认值

  1. 组件变化
    ○ FlutterBoost.singleton.open => BoostNavigator.instance.push
    ○ Scaffold中appBar属性的类型Widget => PreferredSizeWidget
    一般常为:AppBar、TabBar、PreferredSize
    resizeToAvoidBottomPadding => resizeToAvoidBottomInset
    ○ Stack中overflow => clipBehavior

  2. 创建List时:List() => []
    List list = []
    var _hotList = []

  3. 页面生命周期监听改变

  4. 类冲突:下面两个引用文件中,都有DateUtils类,会发生冲突,DateUtils识别不出什么意思
    解决方法是其中一个改名或者去掉一个import

import 'package:ncflutter/utils/date_utils.dart';
import 'package:flutter/material.dart';
DateUtils.format()
  • 1
  • 2
  • 3
  1. WillPopScope组件的onWillPop方法需要用async修饰

  2. programKey.currentContext!.findRenderObject()返回值为RenderObject需强转为RenderBox

两周时间FlutterBoost发布了两个小版本,很多issue还没有修复,目前想先等一波

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/469277
推荐阅读
相关标签
  

闽ICP备14008679号