flutter开发小技巧2
  CpwfxCg9mmk0 2023年11月02日 180 0


flutter开发小技巧2_职场和发展

代码静态分析

在提交代码时为了提高代码质量,保持团队的代码风格一致,需要进行代码静态分析,一般通过下面2种方法来进行

flutter analyze

使用flutter analyze进行代码静态分析,此命令会根据analysis_options.yaml定义的规则进行静态分析

dartfmt

使用dartfmt ./ -w对当前目录以及子目录的dart代码进行代码,-w选项会自动重写文件使其符合规范。

使用dartfmt ./ -n显示当前目录以及子目录的dart代码格式可以修改的文件但是不做修改,可以配合ci分析代码格式问题。

更多选项请使用dartfmt --help查看

Push & present & Pop

// Push by route
Navigator.pushNamed(context, '/b')
  
// push 
Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => MyPage()));

// present
Navigator.of(context).push(MaterialPageRoute(builder: (BuildContext context) => MyPage(),fullscreenDialog: true));

// pop
Navigator.pop(context)
  
// pop + push
Navigator.of(context)
    ..pop()
    ..pop()
    ..pushNamed('/settings');

API

// push
Future push(BuildContext context, Route route)

// pop
bool pop(BuildContext context, [ result ])
  
// 下面两种是等效的
Navigator.push(BuildContext context, Route route)
Navigator.of(context).push(Route route)

获取widget的位置和宽高

final RenderBox box = keyContext.findRenderObject();
final size = box.size;
final topLeftPosition = box.localToGlobal(Offset.zero);

See more

Model To JSON

json_serializable

  1. 引入 dependencies: # Your other regular dependencies here json_annotation: ^2.0.0 dev_dependencies: # Your other dev_dependencies here build_runner: ^1.0.0 json_serializable: ^2.0.0
  2. 使用 import ‘package:json_annotation/json_annotation.dart’; // user.g.dart 将在我们运行生成命令后自动生成 part ‘user.g.dart’; ///这个标注是告诉生成器,这个类是需要生成Model类的 @JsonSerializable() class User{ User(this.name, this.email); String name; String email; //不同的类使用不同的mixin即可 factory User.fromJson(Map<String, dynamic> json) => _KaTeX parse error: Expected group after '_' at position 56: …c> toJson() => _̲UserToJson(this); }
  3. 单次解析:flutter packages pub run build_runner build
  4. 持续集成flutter packages pub run build_runner watch
  5. json_serializable 在线json转dart model工具

Built value

  1. 在线json转build value 模板工具 https://charafau.github.io/json2builtvalue/
  2. VSCode built value 插件
1. Sample code // interface model import ‘package:built_value/built_value.dart’; part ‘user.g.dart’; abstract class User implements Built<User, UserBuilder> { String get name; @nullable String get nickname; User._(); factory User([updates(UserBuilder b)]) = _KaTeX parse error: Expected 'EOF', got '}' at position 7: User; }̲ // init var u…Node; } // new or update var node = new Node((b) => b …left.left.left.right.left.right.label = ‘I’m a leaf!’ …left.left.right.right.label = ‘I’m also a leaf!’); var updatedNode = node.rebuild((b) => b …left.left.right.right.label = ‘I’m not a leaf any more!’ …left.left.right.right.right.label = ‘I’m the leaf now!’);

参考

最后

这里也为想要学习Flutter的朋友们准备了两份学习资料《Flutter Dart语言编程入门到精通》《Flutter实战》,从编程语言到项目实战,一条龙服务!!

《Flutter Dart 语言编程入门到精通》

  • 第一章 Dart语言基础
  • 第二章 Dart 异步编程
  • flutter开发小技巧2_职场和发展_02

  • 第三章 异步之 Stream 详解
  • 第四章 Dart标准输入输出流
  • flutter开发小技巧2_android_03

  • 第五章 Dart 网络编程
  • 第六章 Flutter 爬虫与服务端
  • flutter开发小技巧2_javascript_04

  • 第七章 Dart 的服务端开发
  • 第八章 Dart 调用C语言混合编程
  • 第九章 LuaDardo中Dart与Lua的相互调用
  • flutter开发小技巧2_android_05

《Flutter实战:第二版》

  • 第一章:起步
  • 第二章:第一个Flutter应用
  • 第三章:基础组件
  • 第四章:布局类组件
  • 第五章:容器类组件

flutter开发小技巧2_职场和发展_06

  • 第六章:可滚动组件
  • 第七章:功能型组件
  • 第八章:事件处理与通知
  • 第九章:动画
  • 第十章:自定义组件
  • flutter开发小技巧2_开发语言_07

  • 第十一章:文件操作与网络请求
  • 第十二章:Flutter扩展
  • 第十三章:国际化
  • 第十四章:Flutter核心原理
  • 第十五章:一个完整的Flutter应用
  • flutter开发小技巧2_flutter_08

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
CpwfxCg9mmk0