首页
学习
活动
专区
圈层
工具
发布

那些初学者实践 Flutter 最常出现的错误

哔哩哔哩漫画APP实践Flutter 也有大半年时间了,我针对线上收集到的错误进行分析,挑选出了一些有一般代表性的错误,列在本文,可供实践 Flutter 的初学者们作为一点参考。...其实,类似的XXX.of(context)方法在 Flutter 代码里很常见,比如 MediaQuery.of(context)、Theme.of(context)、DefaultTextStyle.of...NoSuchMethodError: The method '*' was called on null. 示例代码 这种错误,较常发生在使用服务端返回的数据model时。...而 Dart 的类型系统中,虽然dynamic可以代表所有类型,在赋值时,如果数据类型事实上匹配(运行时类型相等)是可以被自动转换,但泛型里 dynamic 是不可以自动转换的。...const {}); } 总结 综上所述,这些典型错误,都不是什么疑难杂症,而是不理解或者不熟悉 Flutter 和 Dart 语言所导致的,关键是要学会容错处理。

3.7K21

Flutter 2.8正式版发布了,还不来看看

我们对 Flutter 调用 Dart VM 的 GC 策略也做了一些改进,以此避免在程序启动期间出现不合时宜的 GC。...在 Flutter 2.8 版本中,Android 设备上 Dart VM 的服务 isolate 已被拆分至单独的 bundle 中,可以单独加载,减少了在其加载前约 40MB 的内存使用。...此外,webview_flutter 还增加了一些呼声极高的功能: 支持使用 POST 和 GET 来加载内容 加载文件或字符串内容为 HTML 支持透明背景 在加载内容前设置 Cookies 此外,在...在 DartPad 中使用 Firebase 由于我们可以只在 Dart 代码中初始化并使用 FlutterFire,那 DartPad 自然也就支持使用 Firebase 啦: 这里有一个使用 Flutter...、结构化对象和方法来简化 Firestore 的使用。

30.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Flutter 移动端架构实践:Widget-Async-Bloc-Service

    因此,在WABS中,我使用了一种名为 Async BLoC 的BLoC变体。 它和BLoC一样,我们有可以订阅的输出流;但是,BLoC输入可以包括 同步接收器、异步方法 甚至 共同的两者。...数据层/BLoC中的行为 1.BLoC应该是纯Dart的——没有UI代码,没有导入Flutter相关类和文件,也没有在BLoC中使用BuildContext。...输入的数据(读取):将来自Firestore文档的键值对的流转换为强类型的不可变数据Model。 数据输出(写入):将数据Model转换为键值对,以便写入Firestore。...无论如何,我发现BLoCs在使用Firestore构建app时效果非常明显,其中数据通过流从后端流入app。 在这种情况下,通常将流进行组合或使用RxDart对其执行转换,BLoC很擅长这个。...结论 本文是对WABS的深入介绍,WABS是我在多个项目中使用了一段时间后探索得出的架构模式。 说实话,随着时间的推移我一直在改进它,在我写这篇文章之前它都还没有名字。

    20.8K20

    App、H5、PC应用多端开发框架Flutter 2发布

    在今天发布的Flutter 2中,我们将Flutter 从一个移动框架扩展到了一个可移植的框架,使您的应用程序可以在各种不同的平台上运行,几乎没有变化。...基于Web的Flutter 也许Flutter 2中最大的一个声明就是对web的生产质量支持。 Web的早期基础是以文档为中心的。...他们最新的web应用程序,现在可以在beta版中使用,完全是用Flutter构建的,是对Flutter在这个环境中所能提供的一切的一封情书。...最后,世界上最畅销的汽车制造商丰田宣布,计划通过建立由Flutter驱动的信息娱乐系统,为汽车带来市场上最好的数字体验。使用颤振标志着在方法上与过去开发车载软件的方式有很大的不同。...我们还宣布了几个核心Firebase服务的flatter插件的更新:身份验证、云Firestore、云功能、云消息传递、云存储和Crashlytics,包括对声音空安全的支持和云消息传递包的大修。

    10.7K30

    Flutter 绘制动机 VSYNC 流程源码全方位分析

    发起绘制 VSYNC 请求 前面我们分析 Flutter App Dart main 方法时有提到 scheduleWarmUpFrame 方法最终调用了 SchedulerBinding 的 scheduleFrame...方法实现其实是 Dart 调用 C/C++ native 代码,对应的也是 PlatformConfiguration_scheduleFrame,我们可以在 engine 的 C/C++ 中搜其注册入口...其实我们日常中调用 Flutter Dart StatefulWidget 的 setState 方法也是调用了上面 scheduleFrame 方法,也就是说绘制的发起都来自 Widget 的变更主动调用触发...scheduleFrame 方法,也就是说第一次 Dart 发起 VSYNC 请求前先设置了回调,当下一个系统 VSYNC 信号到来时就调用了 onBeginFrame、onDrawFrame 的回调赋值...Framework Dart 层小节收到下一帧 VSYNC 绘制信号部分被调用的入库,即下一个 VSYNC 绘制信号过来最终引擎 engine 调用了 Dart 层入口在hooks.dart文件的_beginFrame

    1.3K00

    Dart 语法快速通关:写给 Flutter 开发者的基础教程

    final/const(不可变变量),尤其是在 Flutter 中,不可变数据能提升组件渲染性能,减少状态混乱;仅在确实需要修改值时使用 var,避免使用 dynamic。...return a + b; } // 带默认参数的函数:Flutter 中组件参数常用默认值(如 Text 的 style 参数) String getGreeting(String name, String...(自定义 prefix) showMessage("函数测试完成"); } 3.2 箭头函数(=>):Flutter 高频使用 箭头函数是简化函数的语法糖,适用于函数体只有一行代码的场景,在 Flutter...关联:Flutter 中的 StatefulWidget 就使用了命名构造函数(如 StatefulWidget()),而从接口数据构建模型对象时,命名构造函数(fromMap)是标准写法。...后续学习建议:掌握以上基础后,可重点学习 Dart 的泛型、扩展方法,以及 Flutter 中基于 Dart 的状态管理(如 Provider、Bloc)、网络请求封装等实战内容。

    33510

    Flutter完整开发实战详解(二、 快速开发实战篇)

    )], ), ) 5、路由跳转   Flutter 中的页面跳转是通过 Navigator 实现的,路由跳转又分为:带参数跳转和不带参数跳转。...中的私有方法 ///Template.g.dart 是通过命令生成的文件。...大家都知道在 Flutter 中 ,是通过实现 State 与 setState 来渲染和改变 StatefulWidget 的。如果使用了flutter_redux 会有怎样的效果?  ...更多 Redux 的详细就不再展开,接下来我们讲讲 flutter_redux 的使用。在 redux 中主要引入了 action、reducer、store 概念。...4、数据库   在 GSYGithubAppFlutter 中,数据库使用的是 sqflite 的封装,其实就是 sqlite 语法的使用而已,有兴趣的可以看看完整代码 DemoDb.dart 。

    5.8K30

    Flutter完整开发实战详解(二、 快速开发实战篇)

    中的私有方法 ///Template.g.dart 是通过命令生成的文件。...序列化源码部分   上述操作生成后的 Template.g.dart 下的代码如下,这样我们就可以通过 Template.fromJson 和toJson 方法对实体与map进行转化,再结合json.decode...大家都知道在 Flutter 中 ,是通过实现 State 与 setState 来渲染和改变 StatefulWidget 的。如果使用了flutter_redux 会有怎样的效果?  ...更多 Redux 的详细就不再展开,接下来我们讲讲 flutter_redux 的使用。在 redux 中主要引入了 action、reducer、store 概念。...4、数据库   在 GSYGithubAppFlutter 中,数据库使用的是 sqflite 的封装,其实就是 sqlite 语法的使用而已,有兴趣的可以看看完整代码 DemoDb.dart 。

    6.2K10

    HomeRental - 预订房产 带有聊天功能的完整 Flutter 应用程序 | 获取X | 网络管理面板v1.0.9

    单聊天模块就绪,一对一聊天(图像和文本)Cloud Firestore。 16. 忘记密码,社交登录按钮(Facebook、Gmail、Apple ID)是模板 17....Android 和 iOS 均运行良好 更新版本v.1.0.9 兼容 Flutter v.3.10.6、Dart v.3.0.6,修复附近地图错误。...改进 Flutter 代码,提高性能 安装需求 1. Flutter 框架 ( https://flutter.dev) 2. 服务器、托管、支持 SSL 的域 (https) 3....使用 PHP v 7.4 至 7 的 Code Igniter v.4x。遵循技术文档中的说明。全力支持。 8. 思考的大脑 技术栈: 1....服务器、托管、带 SSL 的域需要支持。 11. 数据库 MySQL、PHPMyAdmin、Bootstrap HTML5 Web 面板 12. Android 和 iOS 均运行良好

    4.8K10

    Dart空安全终极指南

    Dart中的空安全 Null Safety 的引入是 Dart 语言的一个重要里程碑。Null Safety 通过「在开发期间而不是在运行时捕获 null 错误来」帮助您避免一整类问题。...❝Null Safety 可作为 Flutter 2.0 的稳定版本使用,并且默认为所有使用 Flutter 2.2 创建的项目启用。 ❞ Dart的类型系统 Dart 有一个「健全的类型系统」。...同样,当我们在 Dart 中编写函数时,可以指定返回「类型」: int square(int value) { return value * value; } 由于「类型安全」,Dart 可以 100%...如果知道可以为空的表达式不会是null,则可以使用!运算符将其分配给不可为空的变量。 非空和空的一些使用技巧 在dart中我们一定要添加对null的检查,这样我们的代码才能更健壮。...在类中使用不可为空变量 如果类中的实例变量不可为空,则必须对其进行初始化: class BaseUrl { String hostName; // Non-nullable instance field

    1.6K10

    有赞Flutter插件开发与发布

    一、Flutter插件简介 一种专用的 Dart 包,其中包含用 Dart 代码编写的 API,以及针对 Android(使用Java或Kotlin)和针对 iOS(使用 OC 或 Swift)平台的特定实现...其次,想必大家在原生工程里都有一套用了多年的稳定基础组件,包括网络组件、数据组件等,要重新在 Flutter 中用 dart 来搭建一套,时间成本、风险成本、组件兼容性等都是不可控的。..., dart 层最终通过调用了 native 方法 Window_sendPlatformMessage,将序列化后的对象通过 c 层进行发送: static Future send...可以先在本地的 example 中对所开发的插件进行验证,验证无误后,再进行发布 五、插件测试 在 example/lib/main.dart 下调用插件中的方法,然后直接通过命令将工程跑起来查看输出...如此我们可以在插件未发布的情况下,直接在本地的测试工程里对插件进行测试。 后续的所有 flutter 模块的单独调试,也是同样的模式。

    2.3K30

    Flutter异常监测与上报

    因此,要实现自定义捕获异常逻辑,只需要为它提供一个自定义的错误处理回调函数即可。 异常捕获 在Flutter开发中,根据异常来源的不同,可以将异常分为Framework异常和Dart异常。...同时,如果需要集中捕获Flutter应用中未处理的异常,那么可以把main函数中的runApp语句也放置在Zone中,这样就可以在检测到代码运行异常时对捕获的异常信息进行统一处理,如下所示。...接下来,我们就可以在 Flutter 工程中的 main.dart 文件中,使用 FlutterCrashPlugin 插件来实现异常数据上报能力了。...dependencies: flutter_push_plugin: git: url: xxx 在下面的代码中,我们在 main 函数里为应用的异常提供了统一的回调,并在回调函数内使用...runZone方法将runApp的运行放置在Zone中,并提供统一的异常回调 runZonedNull>>(() async { runApp(MyApp()); },

    3.7K10

    Flutter 数据持久化存储之Hive库

    这种方式适合存储结构化数据,可以使用JSON格式或者其他格式进行数据的读写。 SQLite数据库: 可以使用sqflite插件在Flutter应用中使用SQLite数据库。...NoSQL数据库: 一些Flutter插件(如moor)也提供了对NoSQL数据库的支持,比如使用对象数据库(如Hive)来存储数据。...: hive_generator: build_runner:   在dependencies中我添加了get和hive的库,在dev_dependencies中添加了一个构建对象的依赖库。...① 初始化Hive   在Flutter中使用Hive,我们需要在main()函数中进行初始化,注意导包语句: import 'package:hive_flutter/hive_flutter.dart.../material.dart'; import 'package:get/get.dart'; import 'package:hive_flutter/hive_flutter.dart'; import

    1.6K01
    领券