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

在 Flutter 中创建可拖动的浮动操作按钮

本教程有一个示例,说明您需要做什么才能创建浮动操作按钮,只要它位于父小部件内,就可以将其拖动到屏幕周围的任何位置。 创建可拖动的浮动操作按钮 我们将为这样的小部件创建一个类。...一个浮动的动作按钮通常可以在点击时执行一个动作,所以我们添加一个名为onPressed( VoidCallback) 的参数作为参数。...所以,我们可以检查内部onPointerUpcallback 仅onPressed在值为_isDraggingis 时调用回调false。 下面是用于创建可拖动浮动操作按钮的类。...您需要向父小部件添加一个键并将其传递给DraggableFloatingActionButton小部件从key中,你可以从currentContext属性中获取RenderBox,它有findRenderObject...中创建可拖动的浮动操作按钮。

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

    Flutter与MobX的那些事

    开始 在以前的一篇文章中,半行代码 介绍到在 Flutter 里面使用 MobX, 今天我们就来聊聊 Flutter 和 MobX 的那些事。...在一个应用中,我们实际上有 2 种状态,这里分别称为 core-state 和 derived-state,core-state 指的就是一个对象原本就存在的状态,例如一个人有自己的firstname和...这里就要借助我们 Flutter-MobX 里的 Widget 啦 final counter = Counter(); // Instantiate the store Observer(...Store里面放的 @observable 对象,因为 Dart 在 Flutter 是不能进行运行时反射的,所以复杂对象需要我们自己进行 observable 的声明。否则不会生效。...到这里,其实我们在使用 MobX 的时候可以组织出职责分层很明确的函数响应式应用架构。但是不同的页面如何持有 Store 对象,也成了一个问题,当然这个问题在所有的分层架构里都存在。

    1K10

    在 Flutter 移动应用程序中创建一个列表

    Flutter 是一个流行的开源工具包,它可用于构建跨平台的应用。在文章《用 Flutter 创建移动应用》中,我已经向大家展示了如何在 Linux 中安装 Flutter 并创建你的第一个应用。...查看Flutter应用的主要部分 Flutter 应用的典型入口点是 main() 函数,我们通常可以在文件 lib/main.dart 中找到它: void main() { runApp(MyApp...经过上面的操作我们将 flutter/material.dart 包添加到了 main.dart 文件中,这样我们就可以使用 Flutter 提供的默认的 material 主题微件。...在 lib 目录中我们创建一个新文件并命名为 item_details_page。...当 Hero 检测到不同页面(MaterialPageRoute)中存在相同标签的 Hero 时,它会自动在这些不同的页面中应用过渡动画。 可以在安卓模拟器或物理设备上运行我们的应用来测试这个动画。

    4.5K10

    Flutter ncnn 使用

    有如下内容: ncnn 体验:环境准备、模型转换及测试 Flutter 项目体验:本文 demo_ncnn 体验 Flutter 项目实现 创建 FFI plugin,实现 dart 绑定 C 接口 创建...pub outdated flutter pub upgrade --major-versions 之后,只需在 src/ncnn_yolox.h 里定义 C 接口并实现,然后用 package:ffigen.../build/ncnn_yolox_test # dart test dart ncnn_yolox_test.dart 创建 App 写 UI 创建 App 项目, flutter create...pub add mobx flutter_mobx provider path_provider flutter pub add -d build_runner mobx_codegen App 状态管理用的...对应实现了两个 Store 类: image_store.dart: 给图片路径,异步加载图片数据 yolox_store.dart: 给图片数据,异步预测图片对象 因为加载、预测都比较耗时,故用的 MobX

    81320

    mobx 能为我们带来哪些改变

    (reaction),如果把react的的render方法也注册为监听器,那么mobx就可以和react配合起来构建一个健全的app架构了。...视图层缓存 mobx提供了一个computed方法,通过computed方法计算的值如果放到了监听器中,那么这个值会被缓存,state没有变动的情况下,computed的值不会重新计算。...想想我们的react中的render方法, 在方法中创建的中间变量都会被重新计算,例如下面的代码,每render一次,就需要计算一次totalPrice,简单的场景还好,如果计算量偏大,这样的消耗就不该发生...需要妥协的有: 1、内存上的增加: mobx会将给定对象深拷贝一份作为私有变量,然后再创建一个对象,包含该私有变量所有属性的getter和setter方法。...= 18; // nothing happened 关于原生变量的情况,mobx返回的是一个observable.box对象,可以去官方文档中查看。

    85110

    为啥Flutter Hooks没有受到太多关注和青睐?

    Memoized Hook 这种 Hook(记忆化 Hook)是在小部件的生命周期中缓存对象实例的一种简单方法。用它可以轻松在页面上创建 BLoC、MobX 存储或通知程序对象。...如果需要,你还可以返回一个在放弃小部件时将调用的函数,如下所示: useEffect(() { store.loadData(); return store.dispose; }, const...定制 Hooks flutter_hooks 包提供了两种自定义 Hooks 的方法,只需使用一个函数或创建一个自定义类即可。...在这里,我们将 tickerProvider 传递为第二个参数,以便在 ticker 更改时(也就是在 length 或 initialIndex 更新时)重新创建控制器。这里依旧都是自动化的。...我通常将它与 Provider 和 MobX 结合使用。 你可以在 pub 上找到 Hooks,附带的文档都很完善。

    1.4K20

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

    在本地测试中,低端 Android 设备的初始帧出现间隔时间最多减少了约 300ms。 在先前的 Flutter 版本中,出于谨慎考虑,在创建 PlatformView 时会阻塞平台线程。...在之前版本的 Flutter 中,嵌入平台视图会创建一个新的 canvas,每嵌入一个平台视图都会新增一个 canvas。...创建额外的 canvas 是十分消耗性能的操作,因为每个 canvas 的大小都与整个窗口相等。在 Flutter 2.8 中,将 复用为先前的平台视图创建的 canvas。...另一个支持是在 FlutterFire 文档中直接内嵌了 DartPad 实例,比如 Firestore 的示例页面: 在这个示例中,你将看到 Cloud Firestore 的文档以及 示例应用 的代码...Firestore ODM 文档 中阅读相关内容。

    29.3K30

    TS+React+Router+Mobx+Koa打造全栈应用

    在react-route的v3版本中则需要自己map映射出来。...因此这次选择了尝试mobx 定义一个store import { observable, action } from 'mobx' export class Store { @observable...为什么是同步的可以参考vuex-mutation runInAction 相当于vuex的action,区别在于,在mobx中是,异步中修改数据,通过runInAction()包裹在内部修改state,...总得来说,在react中可以把mobx和vuex看成类似的工具,都是进行全局数据管理的,可以跨组件使用。区别在于mobx更加强大,可以更加灵活的定义需要观察的对象。...我们知道使用事件委托要比在每一个元素上都绑定了事件监听器要好很多,在vue中,我们给v-for渲染出来的组件绑定事件监听器时,文档已经指出帮我们做了关于委托的优化。

    2.1K70

    【微信小程序开发】自定义tabBar案例(定制消息99+小红心)

    (几乎每个要实现的都需要这一步) 创建自定义组件代码文件 编写代码 详细步骤参考官方文档 ---- 注意:在配置自定义tabBar时,app.json中节点list不能删除,因为仍需要指定tabBar页面...如果未定义info则为假,不显示,如果为0也为假,也不显示符合我们的开发需求 使用mobx全局共享 思路:mobx绑定全局控制info mobx官方文档 在index.js如下配置 /.../ custom-tab-bar/index.js import { storeBindingsBehavior } from 'mobx-miniprogram-bindings' //引入创建绑定实例...(大家都知道组件通信很麻烦), 但是忘了组件有一个非常的方法:数据监听器 (behavior) a 代码解释: 在以往赋值时是不需要对赋值对象加上双引号“”的, 但是 list需要索引到...,组件中的active会变化,而js文件的active没问题 解决方法: 将active 存贮到store 进行全局共享 添加字段和方法 在index.js文件中 修改onChnage

    1.8K20

    React+Mobx写法更像Vue了

    Mobx是一个功能强大,上手非常容易的状态管理工具。就连redux的作者也曾经向大家推荐过它,在不少情况下你的确可以使用Mobx来替代掉redux。...vue作者尤雨溪说: Mobx 在 React 社区很流行,实际上在 Vue 也采用了几乎相同的反应系统。...结合React使用 在React中,我们一般会把和页面相关的数据放到state中,在需要改变这些数据的时候,我们会去用setState这个方法来进行改变。...考虑到ES5中原生数组对象中存在一定的限制,所以Mobx将会创建一个类数组对象来代替原始数组。...= false) 用来监听数组的变化(类似ES7中的observe,可惜这个ES7中的observe将被废弃),它返回一个用以注销监听器的函数。

    1.9K20

    2022社招react面试题 附答案

    总结: componentWillMount:在渲染之前执行,用于根组件中的 App 级配置; componentDidMount:在第一次渲染之后执行,可以在这里做AJAX请求,DOM的操作或状态更新以及设置事件监听器...Diff算法中React会借助元素的Key值来判断该元素是新近创建的还是被移动而来的元素,从而减少不必要的元素重渲染。...可以看到,在整个流程中数据都是单向流动的,这种⽅式保证了流程的清晰。 9、redux与mobx的区别?...两者对⽐: redux将数据保存在单⼀的store中,mobx将数据保存在分散的多个store中 redux使⽤plain object保存数据,需要⼿动处理变化后的操作;mobx适⽤observable...当然mobx和redux也并不⼀定是⾮此即彼的关系,你也可以在项⽬中⽤redux作为全局状态管理,⽤mobx作为组件局部状态管理器来⽤。 10、redux异步中间件之间的优劣?

    2.7K10

    《跨越边界:探索跨端框架中通用状态管理方案设计》

    在单一平台开发中,已有不少优秀的状态管理方案,如React中的Redux、Vuex之于Vue等。...Redux遵循严格的单向数据流,通过action、reducer和store来管理状态,使状态变化可预测且易于调试。然而,当应用拓展到多端时,Redux的使用就会面临挑战。...虽然mobX - react - native在React Native开发中能简化状态管理,但在跨Web端或其他非React Native的移动端框架时,其兼容性就大打折扣。...Flutter的Provider虽然能在Flutter应用中方便地实现状态共享,但在与Web或其他非Flutter框架交互时,由于数据结构和编程范式的差异,也很难构建通用的状态管理体系。...在Web端,使用事件监听器监听状态变化事件,当用户在电商应用中添加商品到购物车,状态更新后触发事件,购物车图标和商品数量显示区域的DOM元素接收到事件后进行更新。

    22010

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

    main.dart 中需要实现三个功能:异常捕获、错误页展示、主页面加载 2.1 异常捕获 - runZoned 在 Flutter 中,还无法捕获的异常,如调用空对象方法异常、Futurer 中的异常等...《Flutter 实战》中讲到:InheritedWidget 是 Flutter 中非常重要的一个功能型组件,它提供了一种数据在 widget 树中从上到下传递、共享的方式 比如我们在应用的根 widget...下面我们就以 GSYGitHubApp 为例,看看优秀的 app 是怎么实现的 2.4.1 创建 store 要使用 flutter_redux 来对页面进行管理,就系要实例化 store ///...创建Store,引用 GSYState 中的 appReducer 实现 Reducer 方法 /// initialState 初始化 State final store = new Store...converter: (store) => store.state.userInfo, ///在 userInfo 中返回实际渲染的控件 builder: (context, userInfo

    1.3K21

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

    main.dart 中需要实现三个功能:异常捕获、错误页展示、主页面加载 2.1 异常捕获 - runZoned 在 Flutter 中,还无法捕获的异常,如调用空对象方法异常、Futurer 中的异常等...《Flutter 实战》中讲到:InheritedWidget 是 Flutter 中非常重要的一个功能型组件,它提供了一种数据在 widget 树中从上到下传递、共享的方式 比如我们在应用的根 widget...下面我们就以 GSYGitHubApp 为例,看看优秀的 app 是怎么实现的 2.4.1 创建 store 要使用 flutter_redux 来对页面进行管理,就系要实例化 store ///...创建Store,引用 GSYState 中的 appReducer 实现 Reducer 方法 /// initialState 初始化 State final store = new Store...converter: (store) => store.state.userInfo, ///在 userInfo 中返回实际渲染的控件 builder: (context, userInfo

    1.2K31

    Flutter状态管理

    在前面的文章中我们学习了Flutter中事件传递的方法,让我们可以在数据流向简单的业务场景中使用InheritedWidget、Notification 或者 EventBus。...在前端开发中我们都会接触redux ,借助于redux 我们可以很轻松地完成多界面数据维护和获取,在Flutter中也有很多状态管理的第三方库,如Provider、Scoped Mode、flutter_redux...、flutter_mobx 、BLoC、fish_redux等。...Provider实现原理 在前面的文章中我们学习过InheritedWidget的用法,通过对InheritedWidget的封装,使得Provider允许在 Widget 树中更加灵活地处理和传递数据...中定义了_nickName属性并设置相关获取与设置属性的方法,在设置属性方法中我们通过notifyListeners方法告知数据刷新。

    1.9K10
    领券