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

Flutter-从入门到项目 05:Dart语法快速掌握(下)

print('非具体类型: $e'); } } 异常三部曲: throw 抛出异常 + catch 捕获异常 + finally 就是要执行 11 泛型 如果你在API文档寻找基本数组类型或者...(dot)来调用实例的变量或者方法。 使用 ?. 来确认前操作数不为空, 常用来替代. , 避免左边操作数为 null 引发异常。 使用 runtimeType 方法,在运行中获取对象的类型。...该方法将返回 Type` 类型的 12.2 实例化变量(Instance variables) 在类定义中,所有没有初始化的变量都会被初始化为null。...声明一个枚举类型需要使用关键字 enum : enum LGColor { red, green, blue } 在枚举中每个值都有一个 index getter 方法,它返回一个在枚举声明中从.../ 在枚举中每个值都有一个 index getter 方法,它返回一个在枚举声明中从 0 开始的位置。

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

    『Flutter』常用组件 表单

    2.表单 2.1.介绍 在Flutter中,表单(Form)是一个用于数据收集和验证的容器组件。它通常与 TextField 和 FormField 等输入组件结合使用,以创建一个完整的用户输入表单。..._formKey 3.1.介绍 _formKey 在 Flutter 中通常是作为一个 GlobalKey 实例来使用,主要用于管理 Form 组件。...它提供了对表单的控制,使得开发者可以在表单外部执行一些操作,如验证表单、保存表单数据、重置表单等。 3.2...._formKey 的主要用法 验证表单(Validating the Form):通过 _formKey.currentState.validate() 可以触发表单中每个 FormField 的验证逻辑...重置表单(Resetting the Form):使用 _formKey.currentState.reset() 可以重置表单到初始状态,清除所有 FormField 的内容。

    1.1K10

    Flutter完整开发实战详解(三、 打包与填坑篇)

    本篇主要描述的Flutter的打包、在开发过程中遇到的各类问题与细节,算是对上两篇的补全。  友情提示:本文所有代码均在 GSYGithubAppFlutter ,要不试试?(◐‿◑)。...但由于笔者项目中使用了第三方的插件包如 shared_preferences 等,在执行 Archive 的过程却一直出现如下问题: 在 `Archive` 时提示找不到 #import 在 IOS 执行 Archive 之前,需要执行 flutter build release,如下图在命令执行之后,Pod 的执行目录会发现改变,并且生成打包需要的文件。...同时如果希望直接在真机上调试 Flutter,可以参考 :《Flutter基础—开发环境与入门》 下的 IOS 真机部分。...所以只要你的控件实现了 preferredSize,就可以放到 AppBar 的 bottom 中使用。比如下图搜索栏,这是TabView下的页面又实用了AppBar。

    4.1K30

    Flutter完整开发实战详解(三、 打包与填坑篇)

    的 apk 会比 ipa 更小一些,这其中的一部分原因是 Flutter 使用的 Skia 在Android 上是自带的。...但由于笔者项目中使用了第三方的插件包如 shared_preferences 等,在执行 Archive 的过程却一直出现如下问题: 在 `Archive` 时提示找不到 #import 在 IOS 执行 Archive 之前,需要执行 flutter build release,如下图在命令执行之后,Pod 的执行目录会发现改变,并且生成打包需要的文件。...同时如果希望直接在真机上调试 Flutter,可以参考 :《Flutter基础—开发环境与入门》 下的 IOS 真机部分。...所以只要你的控件实现了 preferredSize,就可以放到 AppBar 的 bottom 中使用。比如下图搜索栏,这是TabView下的页面又实用了AppBar。 ?

    1.8K10

    Flutter异常监测与上报

    在Flutter开发中,根据异常来源的不同,可以将异常分为Framework异常和Dart异常。...因此,要实现自定义捕获异常逻辑,只需要为它提供一个自定义的错误处理回调函数即可。 异常捕获 在Flutter开发中,根据异常来源的不同,可以将异常分为Framework异常和Dart异常。...同时,如果需要集中捕获Flutter应用中未处理的异常,那么可以把main函数中的runApp语句也放置在Zone中,这样就可以在检测到代码运行异常时对捕获的异常信息进行统一处理,如下所示。...目前为止,我们已经对应用中出现的所有未处理异常进行了捕获,不过这些异常还只能被保存在移动设备中,如果想要将这些异常上报到服务器还需要做很多的工作。...这两步对应着在 Dart 层需要封装的 2 个原生接口调用,即 setup 和 postException,它们都是在方法通道上调用原生代码宿主提供的方法。

    3.3K10

    Flutter 上的一个 Bug 带你了解键盘与路由的另类知识点

    事情是这样的,由于近期 Flutter 发布了 1.17 的稳定版,按照“惯例”开始着手把生产项目升级到 1.12.13+hotfix.9 版本,在升级适配完成之后,一个突如其来的 Bug 让我陷入了沉思...其实 Window 的值来源于 Flutter Engine,在键盘弹出时 Flutter Engine 会通过 _updateWindowMetrics 方法更新 Window 数据,并执行 window.onMetricsChanged...这时候我突然想起,之前为了锁定页面的字体大小不跟随系统缩放,我在路由层使用了 MediaQueryData.fromWindow 复制一份 MediaQuery,问题很可能出在这里: Navigator.of...= null) _scopeKey.currentState....MaterialApp 的更新,导致了 PageRoute 重新 builder, 使得没有键盘的 Scaffold 使用了弹出键盘的 viewInsets.bottom。

    1.5K80

    Kotlin协程实现原理:CoroutineScope&Job

    = null): Job = JobImpl(parent) 这个很好理解,当传入parent时,此时的Job将会作为parent的子Job。...默认情况下,如果内部的子Job发生异常,那么它对应的parent Job与它相关连的其它子Job都将取消运行。俗称连锁反应。...-> Unit 这个cause有三种情况分别为: is null: 协程正常执行完毕 is CancellationException: 协程正常取消,并非异常导致的取消 Otherwise: 协程发生异常...使用Kotlin语言进行开发,项目架构是基于Jetpack&DataBinding的MVVM;项目中使用了Arouter、Retrofit、Coroutine、Glide、Dagger与Hilt等流行开源技术...flutter_github: https://github.com/idisfkj/flutter_github 基于Flutter的跨平台版本Github客户端,与AwesomeGithub相对应。

    1.7K40

    Flutter 面试知识点集锦

    中所有的基础类型、类等都继承 Object ,默认值是 NULL, 自带 getter 和 setter ,而如果是 final 或者 const 的话,那么它只有一个 getter 方法,Object...+ indicatorWeight); } 13、Assert(断言) assert 只在检查模式有效,在开发过程中,assert(unicorn == null); 只有条件为真才正常,否则直接抛出异常...Zone Dart 中可通过 Zone 表示指定代码执行的环境,类似一个沙盒概念,在 Flutter 中 C++ 运行 Dart 也是在 _runMainZoned 内执行 runZoned 方法启动...Flutter 中 setState 其实是调用了 markNeedsBuild ,该方法内部标记此Element 为 Dirty ,然后在下一帧 WidgetsBinding.drawFrame...PlatformView Flutter 中通过 PlatformView 可以嵌套原生 View 到 Flutter UI 中,这里面其实是使用了 Presentation + VirtualDisplay

    5.5K61

    Flutter实现电影院选座效果!

    导语 接到了一个仿电影院的需求,上周几乎是找遍了百度,谷歌,stackoverflow。均没有找到用flutter实现的效果,那只能自己写一个了。本文只讲思路,具体实现还需各位看官自己动手。...= null) {       controller.fromInteractiveViewKey.currentState.onScaleUpdate(details);     }   }   _...= null) {       controller.fromInteractiveViewKey.currentState.onScaleStart(details);     }   }   _onInteractionEnd...= null) {       controller.fromInteractiveViewKey.currentState.onScaleEnd(details);     }   } 完全无需任何加工...这里讲一个UI适配的注意事项: 由于笔者项目用了ScreenUtil(UI自适应),所以在竖屏的时候,传入竖屏的UI尺寸图,且尺寸结尾使用.w进行适配,当横屏时,传入横屏的UI尺寸图(其实就是将竖屏的width

    1.7K30

    Flutter之网络请求封装

    = null){ return ApiException(apiResponse.code, apiResponse.message); } 是因为有些时候后端业务异常时修改了返回的 http 状态码...,在 catch 中进行统一异常处理,当外部未处理异常时则在 handleException 中进行统一处理,如 401 则跳转登录页,其他错误统一弹出错误提示。...前面解决异常处理使用了一个全局的 request 方法,loading 可以使用同样的思路实现,创建 loading 方法: Future loading( Function block, {bool...同时对 block 包裹 try-catch 保证在异常时取消 loading,并且在 catch 中不做任何处理直接抛出异常。..."登录失败"}"); 这句输出并没有执行,当 onError 返回 false 时依然会弹出错误的提示,是因为返回 false 时调用了默认的异常处理弹出提示,返回 true 时则不会调用默认的异常处理方法

    7.9K11
    领券