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

Git忽略本地的文件修改,保留其在远程仓库的状态.md

Git忽略本地的文件修改,保留其在远程仓库的状态 项目中的一些配置文件,需要在本地根据实际情况配置和修改,但同时这些配置仅在本地使用,并不想提交到远程仓库,这个时候仅使用.gitignore就办不到了...如引言中的使用场景,在项目中有一些配置文件在远程仓库存在,但是本地的修改并不具有普适性,因此是不需要提交到远程仓库的,天真的我一开始将项目拉下后,直接在.gitingnore中添加了相关文件,但是在修改后发现...但是在我的知识体系中,还没有一个很好的解决方式,遂google探索之,终于找到了非常符合场景需求的一个git操作: 忽略跟踪 git update-index --assume-unchanged 状态,也就是说之前被设置忽略的文件,犹如掩耳盗铃般,只是不被提交,但是在merge、checkout的时候还是会被提示覆盖风险而导致git操作失败

2.5K30

为什么 build 方法放在 State 中而不是在 StatefulWidget 中

为什么 build 方法放在 State 中而不是在 StatefulWidget 中呢?其中前2点是源代码的注释中给出的原因,最后一点是我的一点个人理解。...闭包 this 指向异常 假设 build 方法在 StatefulWidget 中,StatefulWidget 的子类写法如下: class MyWidget extends StatefulWidget...性能 有状态的组件包含StatefulWidget 和 State,当有状态组件的配置发生更改时,StatefulWidget 将会被丢弃并重建,而 State 不会重建,框架会更新 State 对象中...widget 的引用,这极大的减轻了系统重建有状态组件的工作。...此方式对动画来说极为重要,由于 State 不会被重建,保留了前面的状态,不断的根据前一个状态计算下一个状态并重建其widget,达到动画的效果。

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

    从零开始的Flutter之旅: StatefulWidget

    StatefulWidget 提供不可变的配置信息以及可以随着时间变化而触发的状态对象;通过监听状态的变化来达到 ui 的更新。...但就这样改变你会发现 ui 是不会刷新的,因为在 StatefulWidget,如果你想改变某个值,同时要同步更新 ui,需要使用 setState 方法。...以上是使用 StatefulWidget 来达到 ui 的动态改变。再对比于之前的 StatelessWidget,它们之间的区别显而易见了。...StatefulWidget 保留了 StatelessWidget 的特性,即保证 final 数据的不变性,而对于非 final 可变数据,将通过 Stete 进行管理。 ?...,同时 Widget Tree 与 Element Tree 的对应位置是没有变化的,那么 Widget 可以避免重建,只是会将其标记为脏状态,然后它的子 widget 将会通过 build 方法进行重建

    1.4K30

    如何提高Flutter应用程序的性能

    重建最小化原则 在调用 setState() 方法重建组件时,一定要最小化重建组件,没有变化的组件不要重建,看下面的Demo,这是一个设置页面, import 'package:flutter/material.dart...如果 Switch 组件的状态改变也会改变其它组件的状态,这是典型的组件间通信,这种情况下可以使用 InheritedWidget,但更建议使用状态管理框架(比如 Provider 等),而不是将其父组件改变为...尽量不要将整个页面定义为 StatefulWidget 组件,因为一旦重建将重建此页面下所有的组件,尤其是 Switch 、Radio等组件状态的改变导致的重建,强烈建议对其进行封装。...,就像上面的例子,将需要重建的 Switch 封装为一个单独的 StatefulWidget 组件,避免了其他不必要的重建。...强烈建议:在组件前加上 const 在组件前加上 const ,相当于对此组件进行了缓存,下面是未加 const 的代码: class ConstDemo extends StatefulWidget

    2.2K10

    The Key of Widget in Flutter

    The Key of Widget in Flutter 当我们刚开始使用Flutter,我们在继承StatelessWidget和StatefulWidget时,不会关注Key。...当我们需要更新界面时,我们会通过setState的方式,让StatefulWidget遍历Widget树进行重建。 有时候,我们会发现,即使我们调用了setState,Widget也没有进行重建。...它的原因 原来,当我们用一个StatefulWidget渲染界面,其状态可能被我们储存在其State中。...所以,当你修改了相同类型的Widget节点位置,又想要保留它的状态时,你需要使用Key。 GlobalKey 官方文档 作用 允许widget在应用程序中的任何位置更改其parent而不丢失其状态。...应用场景:在两个不同的屏幕上显示相同的widget,并保持状态相同。 可以在任何地方通过key.currentState获取其状态,甚至可以调用changeState()改变它的状态。

    1.4K20

    Widget中的state到底是什么

    其中,对于组件完成创建后就无需变更的场景,状态的绑定是可选项。这里的“可选”就区分出了Widget的两种类型,即:StatelessWidget不带绑定状态,StatefulWidget带绑定状态。...在Flutter中,这样的Widget被称为StatelessWidget(无状态组件)。 这里有一张StatelessWidget的示意图,如下所示: ?...在Flutter中,这一类Widget被称为StatefulWidget(有状态组件)。这里有一张StatefulWidget的示意图,如下所示: ? 看到这里你可能有点困惑了。...因为,之前我们提到,Widget是不可变的,发生变化时需要销毁重建,所以谈不上状态。那么,这到底是怎么回事呢? 其实,StatefulWidget是以State类代理Widget构建的设计方式实现的。...StatelessWidget是静态的,一旦创建则无需更新;而对于StatefulWidget来说,在State类中调用setState方法更新数据,会触发视图的销毁和重建,也将间接地触发每个子Widget

    3.6K20

    Flutter Hooks 使用及原理

    Flutter Hooks原理 在了解Flutter Hooks原理之前我们要先提几个问题。在用Hooks改造计数器之后,就没有了StatefulWidget。那么计数器的状态放在哪里了呢?...这个函数由其子类实现;如果不保留状态,那就调用_createHookState重新获取一个状态实例把原来的给替换掉。...一般来讲我们都是想保留状态的,这也是Flutter Hooks的默认行为,具体判断呢则是在函数Hook.shouldPreserveState内: static bool shouldPreserveState...如果为空或者相等,那么就认为是要保留状态,否则不保留。 分支走完了最后就是通过HookState.build拿到状态值,然后把_currentHookState指向下一个。...总结 从以上对flutter_hooks的介绍可以看出,使用Hooks可以大大简化我们的开发工作,但是要注意一点,flutter_hooks并不能处理在Widget之间传递状态这种情况,这时就需要将Hooks

    2.8K30

    FlutterDojo设计之道—状态管理之路(一)

    所以,Flutter在StatelessWidget、StatefulWidget的基础之上,还有一个InheritedWidget,专门用于进行数据、状态的共享与传递,除此之外,申明式编程独特的响应式架构...下面的文章,将带领大家梳理Flutter中的数据流向,掌握Flutter的状态管理方案。 开篇 要管理Widget的数据、状态,首先要了解下,在Flutter中有哪些需要管理数据的场景。...另外一种,就是多页面之间的数据共享。...方案1-1 :StatefulWidget 这个相信大家都很了解了,StatefulWidget通过State来保存状态,当调用setState函数之后,整个StatefulWidget会重新执行build...,所以这个页面中的100个Widget都将执行重建,这显然是「家里有矿系列」,所以为了避免这个问题,就需要缩小StatefulWidget的范围,让setState函数控制的刷新,尽可能的范围小,这样当

    1.4K20

    Flutter Widget框架之旅 顶

    根据输入更改小部件 主要文章:StatefulWidget,State.setState 到目前为止,我们只使用无状态的小部件。...在Flutter中,这两种类型的对象具有不同的生命周期。 小部件是临时对象,用于构建当前状态下的应用程序演示文稿。 另一方面,State对象在调用build()之间是持久的,允许它们记住信息。...它将它在构造函数中接收到的值存储在final的成员变量中,然后在build函数中使用它。例如,inCart布尔值可以在两个可视外观之间切换:一个使用当前主题的主要颜色,另一个使用灰色。...响应小部件生命周期事件 主要文章:State 在StatefulWidget上调用createState之后,框架将新的状态对象插入树中,然后在状态对象上调用initState。...此外,语义上同步条目意味着保留在有状态子部件中的状态将保持附加到相同的语义条目而不是在视口中的相同数字位置上的条目。 全局Key 主要文章:GlobalKey 您可以使用全局键来唯一标识子窗口部件。

    7.9K20

    Flutter简单介绍以及 Hello World解析

    Navigator可以让您的应用程序在页面之间的平滑的过渡。 是否使用MaterialApp完全是可选的,但是使用它是一个很好的做法。...在Flutter中,这两种类型的对象具有不同的生命周期: Widget是临时对象,用于构建当前状态下的应用程序,而State对象在多次调用build()之间保持不变,允许它们记住信息(状态)。...它将其在构造函​​数中接收到的值存储在final成员变量中,然后在build函数中使用它们。 例如,inCart布尔值表示在两种视觉展示效果之间切换:一个使用当前主题的主色,另一个使用灰色。...响应widget生命周期事件 主要文章: State 在StatefulWidget调用createState之后,框架将新的状态对象插入树中,然后调用状态对象的initState。...此外,语义上同步条目意味着在有状态子widget中,保留的状态将附加到相同的语义条目上,而不是附加到相同数字位置上的条目。

    62110

    Flutter 的状态管理方案:setState、BLoC、ValueNotifier、Provider

    的 ChangeNotifierProvider 和 Consumer,这为我们提供了一种表示加载状态的方法,并在更改时重建 widget。...实际上,他们之间几乎相同: ScopedModel ↔︎ ChangeNotifierProvider ScopedModelDescendant ↔︎ Consumer 因此,如果你已经在使用 Provider...通过使用 ChangeNotifierProvider> 来包装它,即使在删除 SignInPageNavigation 之后,我也能保留所选的选项。...总结如下: StatefulWidget 在 state 被删除后,不再记住自己的 state。 使用 Provider,我们可以选择在哪里存储 widget 树中的状态。...这样,即使删除使用它的小部件,状态也会被保留。 ValueNotifier 比 setState 需要更多的代码。但它可以用来记住状态,通过在 widget 树中放置适当的 Provider。

    6.1K00

    flutter跨平台原理

    将程序中的类结构更新完成后,Flutter会立即重建整个控件树,从而更新界面。...的转换,因为Flutter在执行热刷新时会保留程序原来的state 3.全局变量和静态成员变量,这些变量不会在热刷新时更新。...2.代码体积优化(Tree Shaking),编译时只保留运行时需要调用的代码(不允许反射这样的隐式引用),所以庞大的Widgets库不会造成发布体积过大。...只需要操作少量的“活跃”对象,大量的没有引用的“死亡”对象则被忽略,这种算法也非常适合Flutter框架中大量Widget重建的场景。...StatelessWidget:内部没有保存状态,UI界面创建后不会发生改变; StatefulWidget:内部有保存状态,当状态发生改变,调用setState()方法会触发StatefulWidget

    2.6K30

    原来Flutter代码是这样运行在原生系统的!快来了解Flutter标准模板,感受原生系统中Flutter的魅力!

    3.4 StatefulWidget V.S StatelessWidget的接口设计 因为Widget要依据数据才能完成构建,对StatefulWidget来说,其依赖的数据在Widget生命周期中可能频繁变化...而Flutter框架收到通知后,会执行Widget#build,根据新状态重建界面。 状态的更改一定要配合使用setState。...应用首页则为MyHomePage,一个拥有_MyHomePageState状态的StatefulWidget。...对StatefulWidget,当数据改变时,需重建Widget去更新界面,即Widget创建销毁会很频繁。...而Flutter采用声明式UI设计,只需描述当前UI状态(即State),不同UI状态的视觉变更由Flutter在底层完成。

    1.1K20

    FlutterDojo设计之道—状态管理之路(四)

    当Child Widget想要跨Widget拿到其它Widget的数据时,通常就需要使用构造函数,将数据一层层传递到Child Widget,这显然不是一个好的解决方案,不仅让Widget之间有了很大的耦合...= oldWidget.count; } 给InheritedWidget增加读写功能 数据的状态通常情况下都是保存在StatefulWidget的State中的,所以,InheritedWidget...必须要结合StatefulWidget才能具有修改数据的能力,因此,思路就是在InheritedWidget中持有一个StatefulWidget的State实例,同时,使用一个StatefulWidget...(RootContainer)中初始化的,当使用StatefulWidget(RootContainer)的setState函数时,InheritedWidget(Root)重建了,但是其child并不会重建...,因为它是widget.child,并不会因为State的重建而重建。

    68520

    Flutter基础入门与核心能力构建——Widget、State与BuildContext核心解析

    有状态Widget(StatefulWidget):需要动态交互或数据更新的UI元素,如可切换的文本、可输入的表单、计数器按钮。...状态管理核心规则(训练营必记) 一个StatefulWidget可对应多个State实例(如ListView中重复创建的列表项Widget); State对象的生命周期独立于其关联的Widget实例——...当Widget被重新创建时(如父Widget重建),State可通过key控制复用,保留之前的交互状态; 状态更新的唯一入口:修改State数据后,必须调用setState(() {})方法,通知框架“...实战示例:点击按钮切换文本(第一阶段基础状态管理) // 有状态Widget实战:文本切换功能 class ToggleTextDemo extends StatefulWidget { @override...后,通过setState触发Widget重建; 所有Widget组成Widget树,每个Widget对应一个BuildContext,是UI的“定位与资源钥匙”; 组件重建时,通过BuildContext

    22210

    Flutter | 和小老弟一起玩转Widget

    Flutter 中的 Widget包含两种,一种是不需要更改状态的 Widget,也就是 StatelessWidget,另一种是可变状态的 StatefulWidget,注意这里所说的状态都是Widget...通俗点理解: 有状态: 交互或者数据改变导致 Widget改变,例如改变文字 **无状态:**不会被改变的 Widget,比如一个纯页面的展示 需要注意的是,使用 StatefulWidget 时,每次直接...setState会导致整个widget全部重建,所以在使用时,我们应该尽量把 子widget 抽离出去,采用局部刷新的方式优化,当然这个技巧具体可以百度或者参阅我之前的代码,并不是什么骚操作,基本入门技巧吧...表示与其对应的 statefulWidget 要维护的状态,State中的保护的状态信息可以: 在widget构建时可以被同步读取; 在widget生命周期改变时可以被读取,当 State 被改变时,可以手动调用...Scaffold 组件对应的状态类 ScaffoldState 中就定义了打开 SncakBar(路由底部提示条)的方法,我们有两种方法在子 widget 树中获取 父级 StatefulWidget的

    1.1K20

    Flutter 零基础入门(四十):TabBar 与底部导航栏 —— 多页面切换与布局技巧

    与底部导航栏 —— 多页面切换与布局技巧 到目前为止,你已经掌握了: 动态列表刷新(Pull-to-Refresh + 分页) 异步数据请求与显示 SnackBar / AlertDialog 提示 StatefulWidget...在 BottomNavigationBar 多页面切换中,如果每个页面都是 StatefulWidget,默认会被重新创建。...解决办法:用 IndexedStack 保持页面状态: body: IndexedStack( index: _currentIndex, children: _pages, ), 切换页面不会重建...五、常见坑 ❌ BottomNavigationBar 切换时页面被重建 → 状态丢失 ❌ TabBar 未用 DefaultTabController → 无法切换 ❌ body / TabBarView...内容与 tabs 数量不匹配 → 报错 ❌ 使用 StatefulWidget 嵌套时未注意 key → 状态错乱 六、本篇你真正掌握了什么?

    1000

    逐行解读 Flutter 默认模板:从 `main()` 到计数器 App

    三、首页组件:MyHomePage(有状态 Widget) class MyHomePage extends StatefulWidget { const MyHomePage({super.key...热重载(Hot Reload): 保留当前状态(如 _counter = 5),只更新 UI 和代码逻辑。适合快速调试样式和逻辑。...概念 在代码中的体现 Widget 是一切 整个 App 由嵌套的 Widget 构成 声明式 UI build() 方法描述“UI 应该是什么样子” 状态驱动更新 通过 setState() 触发 UI...重建 状态与 UI 分离 StatefulWidget + State 模式 热重载开发体验 修改代码即时生效,不丢失状态 下一步建议 动手修改:尝试添加“减一”按钮,或把计数器改成倒计时。...观察 rebuild:在 build() 方法开头加 print('Rebuilding...'),看看何时被调用。

    16210
    领券