首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Flutter 专题】46 图解新的状态管理 Provider (一)

Provider 方式 最基本的状态管理方式,以一个参数方式绑定和展示; 1....获取数据 Provider 需要在数据绑定的子 Widget 中进行获取;使用静态方法 Provider.of(BuildContext context),此方法从 BuildContext 关联的...Widget Tree 中查找最近的相同类型的数据进行展示;没有则报异常; Text('${Provider.of(context)}'), Text('FirstPage Provider...作用域 和尚在刚开始学习时被作用域卡到,实际文档说的很明白,获取绑定数据的范围是在绑定数据的子 Widget 中;和尚绘制了一下个人理解的基本作用域图,如有错误请多多指导; ?...---- 和尚对 Provider 的理解还很浅显,对于其他 Provider 的使用还未尝试;如有错误请多多指导!

2K41

「 Flutter 项目实战 」设计企业级项目入口 main.dart 设计与实现 ( GSYGithubApp 源码解读·二 )

文件,新方案功能要多很多,所以我们需要拆分为:main.dart 和 app.dart 两个文件来实现 在 main.dart 中需要实现三个功能:异常捕获、错误页展示、主页面加载 2.1 异常捕获...- runZoned 在 Flutter 中,还无法捕获的异常,如调用空对象方法异常、Futurer 中的异常等 同样,对于在 Dart 中的同步异常和异步异常,同步异常可以通过 try/catch 捕获...、Timer 创建、微任务调度的行为,同时 Zone 也可以捕获所有未处理的异常 将上面代码结合 runZoned 实现就是: runZoned(() { Future.delayed(Duration...,我们将其内容封装在一个对象中传递 通常情况下我们只需要在请求错误时,向用户反馈结果 所以这里我们只需封装一个 HttpErrorEvent 对象(当然如果需要,我们也可以添加更多的类型对象) 这里我们新建一个类...///因为此时 State 的 context 是 FlutterReduxApp 而不是 MaterialApp ///所以如果直接用 context 是会获取不到 MaterialApp 的 Localizations

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

    「 Flutter 项目实战 」设计企业级项目入口 main.dart 设计与实现 ( GSYGithubApp 源码解读·二 )

    文件,新方案功能要多很多,所以我们需要拆分为:main.dart 和 app.dart 两个文件来实现 在 main.dart 中需要实现三个功能:异常捕获、错误页展示、主页面加载 2.1 异常捕获...- runZoned 在 Flutter 中,还无法捕获的异常,如调用空对象方法异常、Futurer 中的异常等 同样,对于在 Dart 中的同步异常和异步异常,同步异常可以通过 try/catch 捕获...、Timer 创建、微任务调度的行为,同时 Zone 也可以捕获所有未处理的异常 将上面代码结合 runZoned 实现就是: runZoned(() { Future.delayed(Duration...,我们将其内容封装在一个对象中传递 通常情况下我们只需要在请求错误时,向用户反馈结果 所以这里我们只需封装一个 HttpErrorEvent 对象(当然如果需要,我们也可以添加更多的类型对象) 这里我们新建一个类...///因为此时 State 的 context 是 FlutterReduxApp 而不是 MaterialApp ///所以如果直接用 context 是会获取不到 MaterialApp 的 Localizations

    1.1K21

    Flutter | 异常处理

    Dart 可以抛出和捕获异常,如果没有被捕获,则会抛出,最终导致程序终止运行 和 Java 不同,Dart 中的所有异常时非检查异常,方法不会声明它们抛出的异常,也不要求捕获任何异常 Dart 提供了...Exception 和 Error 类型,以及一些子类型。...也可以自定义异常类型。此外,Dart 程序可以抛出任何 非null 对象,不仅限 Exception 和 Error 对象。...e) { // 其他任何异常 print('Unknown exception: $e'); } catch (e) { // 没有指定的类型,处理所有异常 print('Something...沙箱可以捕获,拦截或修改一些代码行为,如 Zone 中可以捕获日志的输出,Timer 创建,微任务调用的行为,同时 Zone 也可以捕获所有未处理的异常,下面看一下 runZoned() 方法的定义:

    83510

    MyBatis 源码分析篇---配置文件的解析过程

    = null) { // 获取settings子节点中的内容 Properties props = context.getChildrenAsProperties();...我们知道getter截取属性冲突主要是由于 getXXX() 和isXXX() 两种类型的方法,截取属性后会冲突。...冲突方法返回值类型相同,则无法确定有用哪个方法,直接抛出异常。 冲突方法返回值类型完全不相关,则无法确定有用哪个方法,抛出异常。...方法的返回值类型,由于getter方法不存在重载的情况,所以可以用它的返回值类型来反推哪个setter方法更合适 获取setter方法的参数类型 如果setter方法的参数类型和其对应的getter方法返回类型一致...,则认为是最好的选择,并结束循环 如果找不到则抛出异常 小节 至此,我们对Reflector类的分析就全部完成,我们从按照三个方面对Reflector类进行了分析,重点介绍了getter 的冲突处理和setter

    54730

    ASP.NET Core 错误处理(Handle Errors)

    确切的说,本节并不是处理异常,只是为了提升用户体验。...、Action Filter和Action中抛出的未处理异常 其他地方抛出的异常不会捕获 本节仅介绍异常过滤器,有关过滤器的详细内容,后续文章将会介绍 先来看一下这两个接口: // 仅具有标记作用,标记其为...和OnExceptionAsync方法都包含一个类型为ExceptionContext参数,很显然,它就是与异常有关的上下文,我们的异常处理逻辑离不开它。...VS 异常过滤器 现在,我们已经介绍了两种错误处理的方法——错误处理中间件和异常过滤器。...在我们的应用中,可以同时使用错误处理中间件和异常过滤器,只有充分发挥它们各自的优势,才能处理好程序中的错误。

    2.1K20

    ​Flutter中异常处理

    Dart 异常,根据来源又可以细分为 App 异常和 Framework 异常。Flutter 为这两种异常提供了不同的捕获方式,接下来我们就一起看看吧。...App 异常的捕获方式 App 异常,就是应用代码的异常,通常由未处理应用层其他模块所抛出的异常引起。...根据异常代码的执行时序,App 异常可以分为两类,即同步异常和异步异常:同步异常可以通过 try-catch 机制捕获,异步异常则需要采用 Future 提供的 catchError 语句捕获。...同步的 try-catch 和异步的 catchError,为我们提供了直接捕获特定异常的能力,而如果我们想集中管理代码中的所有异常,Flutter 也提供了 Zone.runZoned 方法。...size: 100, ), Text(flutterErrorDetails.exceptionAsString()) ]), )); }; 一个局中显示的错误图片和错误文本

    2.7K10

    【 源码之间 - Flutter 】 FutureBuilder 使用

    AsyncSnapshot状态量类 所以先看一下_snapshot对象所对应的AsyncSnapshot类 它核心是三个成员变量,记录状态、数据和异常情况 并且提供一些命名构造方便创建对象和一些...方法来创建组件,其中会回调_snapshot给外界使用 这时_snapshot的状态是waiting; @override Widget build(BuildContext context)...snapshot.hasError会为true,这样可以构建错误界面 Widget _builderList( BuildContext context, AsyncSnapshot<List<...void _unsubscribe() { _activeCallbackIdentity = null; } ---- FutureBuilder的源码也就这些,看到了也就不是很难。...说白了就是在封装一下异步任务执行情况,本质也是靠setState进行更新子组件。 ---- 尾声 欢迎Star和关注FlutterUnit 的发展,让我们一起携手,成为Unit一员。

    1.1K20

    【 源码之间 - Flutter 】 FutureBuilder源码分析

    AsyncSnapshot状态量类 所以先看一下_snapshot对象所对应的AsyncSnapshot类 它核心是三个成员变量,记录状态、数据和异常情况 并且提供一些命名构造方便创建对象和一些...方法来创建组件,其中会回调_snapshot给外界使用 这时_snapshot的状态是waiting; @override Widget build(BuildContext context) =...snapshot.hasError会为true,这样可以构建错误界面 Widget _builderList( BuildContext context, AsyncSnapshot<List<Article...void _unsubscribe() { _activeCallbackIdentity = null; } 复制代码 ---- FutureBuilder的源码也就这些,看到了也就不是很难。...说白了就是在封装一下异步任务执行情况,本质也是靠setState进行更新子组件。 ---- 尾声 欢迎Star和关注FlutterUnit 的发展,让我们一起携手,成为Unit一员。

    1.9K10

    VMPROTECT处理异常2-各种异常处理(VEH,VCH,SEH,UEF)

    (UEF和VEH、VCH的函数类型名不一样,但是参数是一样的): typedef struct _EXCEPTION_POINTERS { PEXCEPTION_RECORD ExceptionRecord...,因为仅仅在处理异常过滤器时,CONTEXT、EXCEPTION_RECORD和EXCEPTION_POINTERS才是有效的。...1.VEH可以指定多个,UEF只能指定一个 2.VEH可以指定异常处理是否处理链的最前面 VEH和UEF的相同: 1.都是进程相关,而不是线程相关 2.若VEH和SEH回调都未处理异常,最后系统要进行展开...如果在处理一个异常过滤器的过程当中又产生一个异常,就发生了嵌套异常。如果没有未处理异常,这个成员就包含一个NULL。...目前只有一种类型的异常提供附加信息,就是EXCEPTION_ACCESS_VIOLATION。所有其他可能的异常都将NumberParameters设置成零。

    3K402

    Flutter | 由Builder Widget而引发的思考

    比如 From.of(context) ,为什么null指针(Dart新特性)了,Navigator.maybePop(context) 怎么异常了,诸如此类需要 context 传入的地方。...= null), super(key: key); @override Widget build(BuildContext context) => builder(...很简单,就尼玛的一个接口回调,这是不是随手都能写一个出来。 缘由 那为什么我自己的context不行呢? 让我们先去看看 Form.of 方法,当然其他of的方法也类似。...of(BuildContext context) { //获取给定类型为T的最近的小部件,该类型必须是具体的[InheritedWidget]子类的类型,并向该小部件注册该构建上下文,以便在该小部件发生更改时...BuildContext 我们可以理解为 BuildContext 对象实际就是 Widget对应的 Element对象.所以我们可以通过 context 在StatelessWidget 和 StatefulWidget

    55110

    Flutter完整开发实战详解(一、Dart语言和Flutter基础)

    Dart 中 number 类型分为 int 和 double ,其中 java 中的 long 对应的也是 Dart 中的 int 类型。Dart 中没有 float 类型。  ...DART中,switch 支持 String 类型。 变量   Dart 不需要给变量设置 setter getter 方法, 这和 kotlin 等类似。...Dart 中所有的基础类型、类等都继承 Object ,默认值是 NULL, 自带 getter 和 setter ,而如果是 final 或者 const 的话,那么它只有一个 getter 方法。...这和 Java 与 JS 存在差异。所以在使用动态类型时,需要注意不要把 number 类型当做 String 使用。  ...类型 作用特点 Container 只有一个子 Widget。默认充满,包含了padding、margin、color、宽高、decoration 等配置。 Padding 只有一个子 Widget。

    3.7K30

    Kotlin 开发中遇到的坑(持续更新)

    1、空类型安全 1.1、可空类型正确用法 kotlin是强类型判断的,每一个对象都有可以为空和不可以为空之分。...,会抛出异常:TypeCastException: null cannot be cast to non-null type kotlin.String //错误写法1,text不是String或为空时...意味着「有一个潜在未处理的 KotlinNullPointerException 在这里」。特别是在多线程开发环境中,而java代码又缺少了对null的强检查,这就更容易会出现空异常了。...在 Kotlin 的类中,val 和 var 是用于表示属性是否有 getter/setter: var:同时有 getter 和 setter。 val:只有 getter。...,并且注意: 在Person中name的类型是String,也就是说是不允许name=null的 输出结果: null 是不是有些奇怪,感觉意外绕过了Kotlin的空类型检查。

    4.6K02

    flutter系列之:构建Widget的上下文环境BuildContext详解

    BuildContext和InheritedWidget InheritedWidget是一种widget用来在tree中向下传递变动信息,在tree的子节点中,可以通过调用BuildContext.dependOnInheritedWidgetOfExactType...在子节点中查找最近的父InheritedWidget,从而将当前的BuildContext绑定的widget和InheritedWidget建立绑定关系,从而在下次InheritedWidget发生变动的时候...= null, 'No FrogColor found in context'); return result!...aspect }); 两者的区别是,后者限定了查找的类型。 除了dependOn之外,BuildContext还提供了两个查找的方法: InheritedElement?...因为如果我们不创建子innnerContext的话,使用的context就是Scaffold的,这样FrogColor.of将会找不到要找的对象,从而报错。

    1.1K10
    领券