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

Flutter & Navigator & ImagePicker :为什么我可以进入下一页?查找已停用的小部件的祖先是不安全的

Flutter是一种跨平台的移动应用开发框架,它允许开发者使用单一代码库构建高性能、美观的移动应用程序。Navigator是Flutter中的导航管理器,用于管理应用程序中不同页面之间的导航。ImagePicker是Flutter中的图像选择器,用于从设备的相册或相机中选择图像。

在给出答案之前,我们先来解释一下这个问题的背景。问题中提到了"为什么我可以进入下一页?查找已停用的小部件的祖先是不安全的"。这个问题涉及到Flutter中的一些概念和注意事项。

首先,为什么可以进入下一页?这是因为在Flutter中,通过使用Navigator来管理页面导航,可以轻松地在不同的页面之间进行切换。开发者可以使用Navigator.push方法将新页面推入导航堆栈,并使用Navigator.pop方法将页面从导航堆栈中弹出。这种导航机制使得应用程序的页面切换变得简单和灵活。

其次,为什么查找已停用的小部件的祖先是不安全的?在Flutter中,小部件是构建用户界面的基本单元。当一个小部件被从小部件树中移除时,它被认为是停用的。查找已停用的小部件的祖先是不安全的,因为已停用的小部件可能已经被销毁或不再可用,这可能导致应用程序崩溃或出现其他问题。

因此,为了确保应用程序的稳定性和安全性,开发者应该避免查找已停用的小部件的祖先。相反,应该使用合适的方法和技术来管理小部件的状态和生命周期,以确保它们在正确的时间被创建、更新和销毁。

关于Flutter、Navigator和ImagePicker的更多信息,可以参考以下链接:

请注意,以上链接仅供参考,如果需要更详细的信息或具体的示例代码,建议查阅官方文档或相关教程。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Flutter 1.22 正式发布

iOS 14 每当发布新版本移动操作系统时,我们都会对其进行彻底测试,以查找影响Flutter及其工具不兼容性或更改。...而是要对其进行管理,请调用Navigator.pop()或Navigator.push()。举例来说,假设您想在首页上显示一系列小部件,并允许用户点击一个小部件以转到专门针对该颜色详细信息页面。...()进行调用,即可将第一个页面推到第一个页面的顶部,从而创建两堆栈。...这个想法是要在导航和Flutter其余部分之间统一模型,同时解决许多问题并添加功能。实际上,这个例子几乎不涉及Navigator 2.0内容。...有关详细信息,强烈推荐有关Flutter声明式导航和路由文章。 另外,您对Navigator 1.0现有使用将像今天一样继续使用,并且不会在短期内被删除。如果您喜欢该模型,则可以继续使用它。

7.5K20
  • 您不会错过2020年7个最重要Flutter更新

    在本文中,将回顾Flutter生态系统中最重要变化以及相关变化。 Navigator 2.0 今年最重要新功能可能是Navigator 2.0。...这些困难行动包括: push多 在中间修改导航堆栈 处理可以启动应用程序事件,即 intents 和推送通知。 现在,使用新声明性API可以轻松处理所有这些情况。...今年推出新小部件是: NavigationRail InteractiveViewer 而更新部件包括: DatePicker TimerPicker Slider RangeSlider 其他更新部件是...重要是要记住,将Flutter桌面合并到稳定分支尚需时日,但是它已经可以很好地工作并且可以考虑用于生产用途。 iOS改进 还引入了有关iOS平台许多改进。...该框架更新,以使其与iOS 14新策略和功能兼容*。cupertino_icons*程序包扩展为带有新图标,并且现有图标更新为与最新iOS 14样式匹配。

    1.5K10

    【老孟FlutterFlutter 2 新增功能

    此版本包括一个更新Scrollbar小部件,该小部件在桌面环境中非常有效 滚动条小部件更新,以提供桌面上预期交互功能,包括拖动拇指,单击轨道以上下滚动页面以及在鼠标悬停在鼠标的任何部分上时显示轨道功能...此外,我们在flutter.dev上创建了一个新Ads页面,您可以在其中找到所有有用资源,例如插件实施指南,内嵌横幅和原生广告代码实验室,以及重叠横幅,非内广告和奖励视频广告代码实验室。...Flutter Fix是事物组合。首先,dartCLI工具有一个新命令行选项,名为dart fix,它知道在哪里可以查找弃用API列表以及如何使用这些API更新代码。...举例来说,假设您应用中包含以下代码行: 使用不推荐使用参数创建Flutter部件 由于不赞成使用此构造函数参数,因此应将其替换为以下内容: 图片发布 创建一个Flutter部件,其中不推荐使用参数替换...将其视为Flutter可以使用”。有关更多详细信息,建议CodeMagic团队发布公告博客。

    7.8K20

    开始使用-编写你第一个Flutter应用程序 顶

    查找和使用包来扩展功能。 使用热重载加快开发周期。 如何实现有状态部件。 如何创建一个无限,延迟加载列表。 如何创建并导航到第二个屏幕。 如何使用主题更改应用程序外观。...如果您应用程序运行不正常,则可以使用以下链接中代码重新进入正轨。...这些将由RandomWordsState管理,这使得用户在下一步中从一个屏幕导航到另一个屏幕时,可以更轻松地更改应用栏中路由名称。...尽可能向下滚动,您将继续看到新单词配对。 ? 问题? 如果您应用程序运行不正常,则可以使用以下链接中代码重新进入正轨。...材质库中Colors类提供了许多可以使用颜色常量,而热重载使得用户界面的实验变得快速而简单。 ? 问题? 如果您应用程序运行不正常,则可以使用以下链接中代码重新进入正轨。

    9.5K20

    Flutter Web:刷新与后退问题

    发布到正式环境换成https后应该可以,不过这里没有测试,LocalStorage基本就满足持久化需求了,所以暂时还没有使用cookieStore。...history其实是完整,但是因为回退时直接交给flutter处理了,浏览器history没有用到),所以执行pop就会出问题,因为没有上一了,所以没有执行任何动作,但是当前页面内容清空,变成空白...,关于Navigator2.0可以参见FlutterNavigator2.0介绍及使用 这里面提到,Navigator2.0在浏览器回退按钮处理上又与Navigator1.0不同,点击回退按钮时Navigator2.0...那么Navigator2.0为什么Navigator1.0不同?...但是这要求我们每个页面在栈中时唯一,无法同时出现两个相同页面,如果应用相对简单其实是可以考虑这种方案) 总结 所以总结就是,目前flutter web对于浏览器还是没有适配完全,无论Navigator1.0

    2.5K30

    Flutter实战 | 从 0 搭建「网易云音乐」APP(九、搜索页面、底部播放控制栏)

    、发现)3.Flutter实战 | 从 0 搭建「网易云音乐」APP(三、每日推荐、推荐歌单)4.Flutter实战 | 从 0 搭建「网易云音乐」APP(四、排行榜、播放页面)5.Flutter实战...歌词(二))8.Flutter实战 | 从 0 搭建「网易云音乐」APP(八、页面) 本篇为第九篇,在这里我们会搭建「搜索页面、底部播放控制栏」。...然后是 UI,不知道有没有童鞋记得以前写过一篇文章:Flutter Wrap & Chip。 ? 在这里完全就能用得上,而且不需要那么多花里胡哨,只有一个文字就行了。...底部播放控制栏 接到很多人反馈说找不到当前听是哪首歌?, 当时觉得这个东西比较简单,就没有写,昨天花了一点时间给写完了。 为什么说他简单呢。。。不是装x,是真的简单,听我说!...so,控制栏逻辑如下: 1.在播放时候保存当前歌曲列表和当前 index 到本地2.在重新打开 APP 时候点击播放可以播放上次播放歌曲 第一个保存,很简单了,使用 shared_preferences

    2.5K10

    Flutter Lesson 4: Flutter组件之App布局组件

    首先来看一下怎么来学习Flutter要了解每一个组件,同时,这又是一个App,所以,目标是直接生产一个App,里面就是对Flutter组件介绍,同时写上一些demo以及源代码,这一个点子源于...React Native With Code这一款App,在学习React Native时候给予了很大帮助。...如果要构建这样一款App,需要先构建一个App首页,包含了一个可以滚动列表,如果可以,还可以添加一些其他组件。以及基础布局组件。...既然有把手,那么就有位置了,所以说高深一点就是对构建所有窗口小部件树结构中窗口小部件位置引用。 一个 BuildContext 只属于一个小部件。...首页展示了列表,我们可以点击每一项进入到子页面,这个时候我们就需要使用到路由组件。

    1.7K50

    Flutter Hello World

    在说完 环境及配置 和 升级更新 之后那我们就可以来看看它真正面目了。 前面只提到了很零星一些关于代码部分内容,现在是时候揭开它神秘面纱了。...且听我说…… 因为默认例子和官网教程虽然是可以运行了,但是觉得还是不够详细。所以既然是要学习的话,为什么不从0开始学习,一点一点来把他搞懂来呢?对吧?...当widget状态发生变化时,widget会重新构建UI,Flutter会对比前后变化不同, 以确定底层渲染树从一个状态转换到下一个状态所需最小更改(译者语:类似于React/Vue中虚拟DOM...(@override 装饰关键字,如果对于后端语言不熟悉少侠们那就需要动手查找资料啦,不然说起来就太长了) 参照右边代码的话这时我们就可以正式使用 MaterialApp 了。...为“质感设计”部件创建一个可视化支架。 噢(恍然大悟)~原来这才是 UI 框架啊?

    1.2K10

    Flutter 1.17 中导航解密和性能提升

    Flutter 1.17 对比上一个稳定版本,更多是带来了性能上提升,其中一个关键优化点就是 Navigator 内部逻辑,本篇将带你解密 Navigator 从 1.12 到 1.17 变化,...Overlay 大家可能用过,在 Flutter可以通过 Overlay 来向 MaterialApp 添加全局悬浮控件,这是因为Overlay 是一个类似 Stack 层级控件,但是它可以通过 OverlayEntry...接着如下图所示,再打开 C 页面时,可以看到同样经历了这个过程: _entries 长度变为 6; onstageChildren 长度先是 4 ,之后又变成 2 ,因为打开时有B 和 C 两个页面参与...所以可以看到,当页面完全打开之后,在最前面的两个 OverlayEntry: 蒙层 OverlayEntry opaque 会被设置为 true,这样后面的 OverlayEntry 就不会进入到...而 1.17 开始,Flutter 在 iOS 上对于支持 Metal 设备将使用 Metal 进行渲染,所以官方提供数据上看,这样可以提高 50% 性能。

    94620

    Flutter 源码系列:DropdownButton 源码浅析

    DropdownButton 构造函数及简单使用 其实关于 DropdownButton 构造函数和简单使用在上一篇文章中已经有过讲解, 如有不懂怎么用可以看这篇文章:Flutter DropdownButton...2.在点击 DropdownButton 时候发生了什么?3.为什么每次弹出位置都是上次选择item位置? 带着如上问题,我们开始。 DropdownButton 是用什么实现?...到这里点击逻辑就结束了,主要就是弹出了一个 PopupRoute。 为什么每次弹出位置都是上次选择item位置?..._DropdownMenu _DropdownMenu 是一个有状态部件,那我们直接看它 _State....总结 把源码看完,我们可以来进行总结一下: 1.未展开 DropdownButton 是一个 IndexStack2.展开 DropdownButton 是通过 PopupRoute 浮在当前上面的

    1.7K30

    Flutter Widget框架之旅 顶

    当小部件状态发生变化时,小部件会重新构建它描述,该描述与前面的描述不同,以确定底层渲染树从一个状态转换到下一个状态所需最小更改。...材质应用程序以MaterialApp小部件开始,该小部件在应用程序根部创建了许多有用部件,其中包括一个Navigator,该导航器管理由字符串(也称为“routes”)标识部件堆栈。...Navigator可让您在应用程序各个屏幕之间平滑过渡。 使用MaterialApp小部件完全是可选,但是一种很好做法。...当此小部件父级重建时,父级将创建ShoppingList新实例,但该框架将重新使用树存在_ShoppingListState实例 而不是再次调用createState。...如果您在修改窗口小部件内部状态时忘记调用setState,则框架将不知道您窗口小部件是脏,并且可能不会调用窗口小部件build函数,这意味着用户界面可能不会更新以反映更改状态。

    6.7K20

    记住,永远都不要在 Flutter 中使用全局变量

    全局变量似乎是很棒 Flutter 程序组件,因为它们被声明一次并且可以被程序中每个函数访问。...但是,这些变量成本比你想象要高,主要是因为: 如果删除一个全局变量,则必须搜索整个程序并重构每个有权访问删除全局变量函数 它们很难测试,因为你必须在测试用例之间重置它们 很难跟踪更改,因为每个函数都可以修改全局变量...以上所有原因都说明了为什么Flutter 中永远不应该使用全局变量。...如果删除一个全局变量,则必须搜索整个程序并重构每个有权访问删除全局变量函数。 2. 全局变量使单元测试变得痛苦 如果你更改了一个具有全局变量模块,那么你将不得不为下一次测试重置它。...SetState 方法 之前,我们只介绍了管理状态 Flutter 包和库。 当你部件更改数据值时,可以调用一个名为 setState 方法。它将导致 UI 根据新状态发生变化。

    3.5K30

    带你快速掌握Flutter视图(Widgets)

    Flutter中,您可以使用Widgets库中核心布局小部件 如 Container, Column, Row, 和 Center,关于Widget更多内容可参考:Layout Widgets目录...如果要根据HTTP网络请求或用户交互后收到数据动态更改UI,则必须使用StatefulWidget并告诉Flutter框架Widget状态更新,以便更新该Widget。...但是,即使Widget是有状态,如果包含它父窗口小部件本身不对这些更改(或其他输入)做出反应,父Widget仍然可以是无状态。...import 'package:flutter/material.dart'; import 'package:flutter_app/navigator/tab_navigator.dart'; void...; 在 Flutter 中,推荐组合多个 Widgets 来构建一个自定义 Widget(而不是扩展它)。

    11K10

    Flutter Scoped_Model 浅析

    Flutter 作为借鉴了很多 React 思想语言,自然也会有相对应状态管理。 那什么是状态管理?为什么需要状态管理? 什么是状态管理?...一组实用程序,允许您轻松地将数据模型从父窗口小部件传递给它后代。此外,它还重建了模型更新时使用模型所有子代。这个库最初是从 Fuchsia 基代码中提取。...下面就解释一下代码, 可以看到,首先是把 ScopedModel 放在了APP 最顶部来初始化: class MyApp extends StatelessWidget { final CounterModel...可以看到,确实只更新了使用该 Model Widget。 总结 在Flutter 中状态管理有很多,redux、fish_redux 等等等等。...而Scoped_Model 是用过最简单,最舒服一种。 因为是搞移动开发,所以我会选择 Scoped_Model。 下一篇简单讲讲 Scoped_Model 原理。

    88730

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

    事情是这样,由于近期 Flutter 发布了 1.17 稳定版,按照“惯例”开始着手把生产项目升级到 1.12.13+hotfix.9 版本,在升级适配完成之后,一个突如其来 Bug 让陷入了沉思...这时候突然想起,之前为了锁定页面的字体大小不跟随系统缩放,在路由层使用了 MediaQueryData.fromWindow 复制一份 MediaQuery,问题很可能出在这里: Navigator.of...但是在经过调试后震惊发现,程序在进入 B 页面弹出键盘后,居然会触发了 A 页面 CupertinoPageRoute builder 方法重新执行。...Demo Home Page'), ); }, ), ); 5、Navigator 这里不禁就有疑问,为什么 MaterialApp 更新会导致...这就涉及 Navigator 相关逻辑,我们常用 Navigator 其实是一个 StatefulWidget,当 MaterialApp 被更新时,可以看到在 NavigatorState

    1.3K80

    Flutter实战 | 从 0 搭建「网易云音乐」APP(八、页面)

    前期回顾: 1.Flutter实战 | 从 0 搭建「网易云音乐」APP(一、创建项目、添加插件、通用代码)2.Flutter实战 | 从 0 搭建「网易云音乐」APP(二、Splash Page、登录...、发现)3.Flutter实战 | 从 0 搭建「网易云音乐」APP(三、每日推荐、推荐歌单)4.Flutter实战 | 从 0 搭建「网易云音乐」APP(四、排行榜、播放页面)5.Flutter实战...经过一番查找后发现,不同类型 Creator 值是不一样,「创建歌单」里数据 Creator.userId 是等于我登录后个人 id , 所以区分代码如下: _selfCreatePlayList...= user.account.id).toList(); ok,数据有了,画页面就简单多了,从图上我们也可以看得出来,是可以展开和收回。...而且在展开/收回时候箭头要来回变化,在前面也写过一篇文章:Flutter | 求求你们了,切换 Widget 时候加上动画吧,这个时候就派上用场了。

    1.5K00

    从零开始Flutter之旅: StatefulWidget

    这次我们接着来聊聊它兄弟 StatefulWidget,俗称有状态小部件。 2特性 如果你看了之前文章,你可能已经非常熟悉无状态小部件 StatelessWidget。...不可变东西是非常喜欢,就像写代码一样,一旦定义了一个不可变变量,就不用再关心它之后所有事情,因为它不可变性质,致使它不会发生不可预期问题,只需直接使用它即可。...因为一旦数据改变,不可变配置是不可能帮助我们刷新 ui,达到我们预期效果;而有状态小部件 StatefulWidget 却可以轻松解决这些事情。...简单点,我们从flutter_github(文章底部会给出链接)项目中挑选一个实例。 ? 当我们点击其中一个未读通知信息时,我们需要将其 ui 状态变成样式。...项目正在持续更新中,感兴趣可以关注一下。 当然如果你想了解 Android 原生,相信 flutter_github纯 Android 版本 AwesomeGithub是一个不错选择。

    1.1K30
    领券