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

仅当我重新加载整个应用程序时,才会显示DropdownButtonFormField的选定值

DropdownButtonFormField是Flutter中的一个小部件,用于创建一个下拉菜单表单字段。它允许用户从预定义的选项中选择一个值,并在表单中显示所选值。

当重新加载整个应用程序时,DropdownButtonFormField的选定值只有在以下两种情况下才会显示:

  1. 如果你在应用程序的状态管理中保存了DropdownButtonFormField的选定值,并且在重新加载应用程序时将其恢复。这可以通过使用Flutter中的状态管理库(如Provider、GetX、Riverpod等)来实现。你可以将DropdownButtonFormField的选定值存储在应用程序的状态中,并在重新加载应用程序时从状态中获取该值并将其传递给DropdownButtonFormField。
  2. 如果你使用持久化存储(如SharedPreferences、SQLite等)将DropdownButtonFormField的选定值保存在本地,并在重新加载应用程序时从存储中获取该值并将其传递给DropdownButtonFormField。

无论哪种方法,你都需要在重新加载应用程序时将选定值传递给DropdownButtonFormField的value参数,以便正确显示选定值。

以下是一个示例代码,演示如何在重新加载应用程序时显示DropdownButtonFormField的选定值:

代码语言:txt
复制
import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String _selectedValue = '';

  @override
  void initState() {
    super.initState();
    _loadSelectedValue();
  }

  Future<void> _loadSelectedValue() async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    setState(() {
      _selectedValue = prefs.getString('selectedValue') ?? '';
    });
  }

  Future<void> _saveSelectedValue(String value) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString('selectedValue', value);
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('DropdownButtonFormField Example'),
        ),
        body: Center(
          child: DropdownButtonFormField<String>(
            value: _selectedValue,
            onChanged: (newValue) {
              setState(() {
                _selectedValue = newValue;
                _saveSelectedValue(newValue);
              });
            },
            items: <String>['Option 1', 'Option 2', 'Option 3']
                .map<DropdownMenuItem<String>>((String value) {
              return DropdownMenuItem<String>(
                value: value,
                child: Text(value),
              );
            }).toList(),
          ),
        ),
      ),
    );
  }
}

void main() {
  runApp(MyApp());
}

在上面的示例中,我们使用了SharedPreferences来保存和加载DropdownButtonFormField的选定值。在应用程序初始化时,我们调用_loadSelectedValue方法从SharedPreferences中获取选定值,并在build方法中将其传递给DropdownButtonFormField的value参数。当用户选择一个新的值时,我们将其保存到SharedPreferences中,并更新应用程序的状态以反映新的选定值。

这是一个简单的示例,你可以根据自己的需求进行修改和扩展。腾讯云提供了丰富的云计算产品,你可以根据具体的需求选择适合的产品。例如,如果你需要在应用程序中存储和获取数据,可以考虑使用腾讯云的对象存储(COS)服务。如果你需要在应用程序中进行人工智能相关的任务,可以考虑使用腾讯云的人工智能服务(AI)。你可以在腾讯云官方网站上找到更多关于这些产品的信息和文档。

希望以上信息对你有帮助!

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

相关·内容

SpringBoot@Conditional使用

这样,我们可能会创建类似的模块,只有在找到相应配置文件才会加载这些模块。 其他条件 上面描述条件注释是我们可能在任何Spring Boot应用程序中使用更常见注释。...{ ... } @ConditionalOnSingleCandidate:类似于@ConditionalOnBean,但只有在确定了给定bean类单个候选项才会加载bean。...{ ... } @ConditionalOnWebApplication:当我们在Web应用程序中运行时才加载bean: @Configuration @ConditionalOnWebApplication...class OnWebApplicationModule { ... } @ConditionalOnNotWebApplication:当我们没有在Web应用程序中运行时才加载bean : @...只有在我们在相应操作系统上运行应用程序时才应加载这些bean。 让我们实现一个条件,只有当我们在unix机器上运行代码加载bean。

2.1K10

hash和history路由模式

我们熟知JS框架如react,vue,angular,ember都属于SPA 与之对应是多页面应用,他们区别如下 优点: 用户体验好、快,内容改变不需要重新加载整个页面,避免了不必要跳转和重复渲染...为了实现前端路由,SPA需要监听URL变化,并据此渲染对应组件或页面不同部分,无需重新加载整个页面。下面让我们分别深入了解两种路由模式原理。...hash和history hash模式原理: 浏览器原生支持通过window.location.hash读写URL中hash,并且当hash变化时,页面不会触发重新加载。...HTTP 请求中,对服务端完全没有影响,因此改变 hash 不会重新加载页面 hash 模式下, hash 符号之前内容会被包含在请求中,如 http://website.com/#/login...单页应用 当我们在浏览器地址栏输入一个地址,浏览器就会去服务端去请求内容。但每次点击一个链接,就去服务端请求,这样会有页面加载等待。

14810

JavaWeb-汇总

Tomcat 需要分别去加载不同应用程序类以及依赖,还必须保证应用程序之间类无法相互访问,而传统加载机制无法做到这一点 而且每个应用程序都有自己依赖,如果两个应用程序使用了同一个版本同一个依赖...,那么还有必要去重新加载吗?...由于我们整个应用程序可能存在多个过滤器,那么这行代码意思实际上是将此请求继续传递给下一个过滤器,当没有下一个过滤器才会到达对应Servlet进行处理,我们可以再来创建一个过滤器看看效果 @WebFilter...但是,有一个重要区别:星号语法针对选定对象而不是整个上下文评估表达式。也就是说,只要没有选定对象,美元(${…})和星号(*{...})语法就完全一样。 什么是选定对象?...,只有满足情况下,才会显示此标签,具体判断规则如下: 如果不是空 是布尔并且为true 是一个数字,并且是非零 是一个字符,并且是非零 是一个字符串,而不是“错误”、“关闭”或“否”

1.4K30

Angular 6+依赖注入使用指南:providedIn与providers对比

在创建一个新对象实例,依赖注入系统将会提供依赖对象(称为依赖关系) - Angular Docs 我们组件和服务都是类,每个类都有一个名为constructor特殊函数,当我们想要在我们应用程序中创建该类对象...在懒加载模块中使用providers: [] 在应用程序运行初始化后一段时间,懒加载模块中提供服务实例才会在子注入器(懒加载模块)上创建。...此解决方案主要好处是,只有真正“使用”这些服务才会打包服务代码。 “使用”代表注入某些组件或其他服务。...简单来讲: 1、如果服务被注入到懒加载模块,它将捆绑在懒加载包中 2、如果服务又被注入到正常模块中,它将捆绑在主包中 这种行为问题在于,在拥有大量模块和数百项服务大型应用程序中,它可能变得非常不可预测...当消费者应用程序只需要可用库功能一个子集,它也处理非常好。只有真正使用东西才会打包进我们应用程序中,我们都希望打包出来文件越小越好。

2.7K11

Vue常用性能优化

区分computed和watch使用场景 computed是计算属性,依赖其它属性,并且computed有缓存,只有它依赖属性发生改变,下一次获取computed才会重新计算computed...当我们需要进行数值计算,并且依赖于其它数据,应该使用computed,因为可以利用computed缓存特性,避免每次获取值,都要重新计算。...当我们需要在数据变化时执行异步或开销较大操作,应该使用watch,使用watch选项允许我们执行异步操作,限制我们执行该操作频率,并在我们得到最终结果前,设置中间状态。...,当state更新,新状态和旧状态对比,较快地定位到diff。...对于需要修改长列表优化大列表两个核心,一个分段一个区分,具体执行分为:渲染视窗可见数据、进行函数节流、 减少驻留VNode和Vue组件,不使用显示子组件slot方式,改为手动创建虚拟DOM来切断对象引用

1.5K10

怎么使用 JavaScript 下载文件

当页面重新加载,浏览器才释放所有的 URL 对象。然而,当不再需要这些 URL 对象,我们需要手动释放,这对提升性能和减少内存使用很重要。...该方法关键点是下载过程将自动启动,但是在我们应用程序中,只有在下载完成后才会传递给浏览器。 注意上面的 GIF 图。...与此同时,当文件完成下载后,当我们需要在应用程序中执行某些操作,该方法很有用处。比如,展示一个信息,发送一个请求给后端来渲染一个新页面等等......这种方法是,我们可以控制应用程序内部下载,根据其状态做出反应。这种方法对下载小文件比较友好快速。当下载文件太大,如果 UI 上没有提示下载,用户可能会认为应用程序有问题。...在最后一个方法中,我们实现了下载进度,这与浏览器显示进度类似。 本文为译文,采用意译形式。

1.8K20

systemctl命令

--state=: 参数应该是以逗号分隔单位负载、子状态或活动状态列表,列出单位显示处于指定状态单位。...-a, --all: 列出单位,请显示所有加载单位,无论其状态如何,包括不活动单位,显示unit/job/manager属性,无论是否设置,都显示所有属性,要列出系统上安装所有单元,请改用list-unit-files...具有相同即时效果,但是由于后者在重新启动丢失,因此更改也会丢失,类似地,当与set属性一起使用时,临时进行更改,以便在下次重新启动丢失更改。....: 取消设置一个或多个systemd manager环境变量,如果只指定了变量名,则无论其如何,都将删除该变量名,如果指定了一个变量和一个,则当该变量具有指定才会删除该变量。...Manager Lifecycle Commands daemon-reload: 重新加载systemd manager配置,这将重新加载所有单元文件并重新创建整个依赖关系树,在重新加载守护进程,systemd

1.6K20

微服务架构之Spring Boot(十七)

20.2.1记录条件评估中变化 默认情况下,每次应用程序重新启动,都会记录一个显示条件评估增量报告。...该报告显示在您进行更改(例如添加或删除beans和设置配置 属性)应用程序自动配置所做更改。...例如,要排除 /static 和 /public ,您需 要设置以下属性: spring.devtools.restart.exclude=static/**,public/** 如果要保留这些默认并添加其他排除项...20.2.3查看其他路径 当您对不在类路径中文件进行更改时,您可能希望重新启动或重新加载应用程序。...为此,您可以使用“触发器文件”,这是一个特殊文件,当您 想要实际触发重新启动检查,必须对其进行修改。更改文件只会触发检查,只有在Devtools检测到必须执行某些操作才会重新启动。

45020

Apriso 开发葵花宝典之传说完结篇GPM

只有当包部署在整个项目所在服务器上,模块才有可能实现已经部署(即至少先部署了一个Everything包)。...从来自修订生成From Revision: 只包含同一个项目的两个版本之间差异-项目当前版本和选定基本版本。 上图显示了三种包生成方法之间差异。...发布选项 重新部署成功部署GPM项目和包依赖项——系统将重新处理成功部署项目和包依赖项。否则,只有失败才会重新处理。此选项与Redeploy选项一起可用。...这个选项只有已经发布过重新发布才会出现 允许用旧实体覆盖新版本——强制系统覆盖服务器上现有的比正在部署实体更新实体。...只有受发布影响订单才会重新分解。 自动重新重建流程Process和操作Operation——强制系统在包部署后重新生成流程或操作。

20510

感觉最近vue相关面试题回答不好,那就总结一下吧

一旦页面加载完成,SPA 不会因为用户操作而进行页面的重新加载或跳转;取而代之是利用路由机制实现 HTML 内容变换,UI 与用户交互,避免页面的重新加载。...优点:用户体验好、快,内容改变不需要重新加载整个页面,避免了不必要跳转和重复渲染;基于上面一点,SPA 相对对服务器压力小;前后端职责分离,架构清晰,前端进行交互逻辑,后端负责数据处理;缺点:初次加载耗时多...:为实现单页 Web 应用功能及显示效果,需要在加载页面的时候将 JavaScript、CSS 统一加载,部分页面按需加载;前进后退路由管理:由于单页应用在一个页面中显示所有的内容,所以不能使用浏览器前进后退功能...(Vue 想确保不仅仅是计算属性依赖发生变化,而是当计算属性最终计算发生变化时才会触发渲染 watcher 重新渲染,本质上是一种优化。)...computed才会重新调用对应getter来计算computed适用于计算比较消耗性能计算场景watch:更多是「观察」作用,类似于某些数据监听回调,用于观察props $emit或者本组件

1.3K30

React-利用React-Profiler提升应用性能

或者,点击「循环按钮」使得「重新加载页面」并立即开始信息收录工作。...「图表类型」 火焰图 排序图 「图表区域」--在应用程序剖析切片中,代表某次commit对应组件渲染时间相关信息。 「提交区域」--每个条形图代表应用程序整个录制阶段所有的commit操作。...展示整个应用渲染信息 当没有选择任何组件(放大),它会显示当前在commit过程中commit概况。数据包括commit时间(自应用程序启动以来),渲染时间,以及优先级。...放大后为我们提供了有用信息--该item被重新渲染,因为它props中value属性发生变化了。 为什么会改变?因为,每次我们过滤列表都会创建一个新数组。...然而,在第二次渲染当我们从数组中过滤掉一些,第一个item可能是不同

1.9K10

React 设计模式 0x0:典型反例和最佳实践

然而,我们有时会编写过于冗长和难以阅读组件,包括从逻辑到显示呈现所有内容。这会导致调试和修复困难。 # Props 穿透 当我们需要在组件树中传递数据,我们可以使用 props。...# 不要传入所有 props 当我们使用 props ,可能将所有 props 传递给子组件,这会导致子组件不必要重新渲染,并不是所有 props 都是子组件需要。...当重新渲染,组件将被销毁并重新创建。这将导致在渲染列表出现一些不一致性。...依赖数组是可选,但如果传递了参数,则当参数发生更改时,函数才会再次运行,并返回结果。...可以将整个应用程序中要使用逻辑提取到一个组件中,并在任何时候使用。这是另一种 DRY 技术,这将使您免受许多代码行影响,并隔离错误。

1K10

Vue.js中延迟加载和代码拆分

有关案例统计,延迟2秒导致每位访客收入损失4.3%。 延迟加载 那么当我们仍然需要添加新功能并改进我们应用程序时,我们如何削减budle包大小?答案很简单 - 延迟加载和代码分割。...顾名思义,延迟加载是一个懒惰地加载应用程序部分(块)过程。换句话说 - 只有在我们真正需要它们加载它们。代码拆分只是将应用程序拆分为多个延迟加载代码块一种处理方式。 ?...通过动态导入,我们基本上将给定节点(在这种情况下为Cat)隔离,当我们决定需要,它将被添加到依赖图并下载此部分(这意味着我们也砍掉了一些Cat.js 中导入模块)。...好消息是它非常简单,我们可以懒加载整个vue单一文件组件(SFC),vue文件语法和HTML, CSS一样。不熟悉的话,去看看官方文档。 ? 现在只有在请求才会下载组件。...以下是调用Vue组件动态加载最常用方法: 调用包含导入函数 ? 渲染组件 ? 请注意,当请求组件在模板中渲染才会调用lazyComponent函数。例如这段代码: ?

7.7K10

vue2基础性能优化

# computed 和 watch computed: 是计算属性,依赖其它属性,并且 computed 有缓存,只有它依赖属性发生改变,下一次获取 computed 才会重新计算 computed... watch: 是监听属性,类似于某些数据监听回调 ,每当监听数据变化时都会执行回调进行后续操作 总结:当我们需要进行数值计算,并且依赖于其它数据,应该使用 computed,因为可以利用...computed 缓存特性,避免每次获取值,都要重新计算; 当我们需要在数据变化时执行异步或开销较大操作,应该使用 watch,使用 watch 选项允许我们执行异步操作 ( 访问一个 API...当 state 更新,新状态和旧状态对比,较快地定位到 diff 。...如果我们能把不同路由对应组件分割成不同代码块, 然后当路由被访问时候才加载对应组件,这样就更加高效了。这样会大大提高首屏显示速度。

72130

useLayoutEffect秘密

「延迟加载」:将不是立即需要资源推迟加载,比如在页面滚动到特定位置或用户执行某些操作加载。...处理“更多”按钮 当我们胸有成竹把上述代码运行后,猛然发现,我们还缺失了一个重要步骤:如何在浏览器中渲染更多按钮。我们也需要考虑它宽度。 同样,我们只能在浏览器中渲染它才能获取其宽度。...我们可以通过各种异步方式(回调、事件处理程序、promises 等)「将整个应用程序渲染为更小任务」 如果我只是用 setTimeout 包装那些样式调整,即使是 0 延迟: setTimeout((...我们最不希望是我们整个 React 应用程序变成一个巨大同步任务。 ❝只有在需要根据元素实际大小调整 UI 而导致视觉闪烁使用 useLayoutEffect。...当我们启用了 SSR ,意味着在后端某个地方调用类似React.renderToString()东西。

21810

Spring Boot 2.0 系列(四):开发者工具

日志记录变化 默认情况下,每次应用程序重新启动,都会记录显示变化报告。报告显示应用程序自动配置更改,如添加或删除bean和设置配置属性。...例如,排除/静态和/public,我们可以设置以下属性: spring.devtools.restart.exclude=static/**,public/** 如果您想保留这些默认并添加额外排除...监听更多路径 当我们对不在类路径上文件进行更改时,我们可能希望应用程序重新启动或重新加载。...为此,我们可以使用“trigger file”,这是一个特殊文件,当我们希望实际触发重新启动检查,必须对其进行修改。...修改文件只会触发检查,只有在Devtools检测到它必须做一些事情才会重新启动。触发器文件可以手动更新或使用IDE插件更新。

96230

Jmix 2.1 发布

可以在应用程序 UI 中定义动态属性: 在配置了属性之后,用户可以在已有的视图中查看并输入属性: 动态属性会自动显示在特殊 dynamicAttributesPanel 组件(如上所示)或任何现有的...系统将为 Book 实体数据自动创建索引(并在每次变动重新索引),用户能使用索引进行全文搜索: ▲搜索组件 搜索结果会根据当前用户数据访问权限自动过滤,消除任何信息泄露风险。...一提是,这三个过滤功能可以在同一视图和数据加载器上一起使用,而不会发生任何冲突。所有过滤器条件都将使用逻辑 AND 运算符进行简单组合。...选定页面大小。...为了节省打开项目的时间,现在只有在 XML 编辑器顶部面板中点击 Start Preview 按钮才会打开预览面板。面板打开后,项目中后续所有打开视图都将展示在预览面板中。

21810

Android SoundPool 音效播放库

该方法建议传参有6个: 但是首先会先从历史痕迹中获取信息,获取不到才会按照下面的配置项进行默认初始化。...而如果是有比较多音效,那需要进行在线下载后调用FileDescripor进行加载当我们使用load()进行加载音频,如果音频文件正确那么就会返回一个id。该为sound Id。...所以并不会影响到我们UI线程显示。...要想使用就需要重新new一个新对象,并赋值音频属性,加载音频文件等操作。 3. 小结 这里只是介绍了我们如何正确使用SoundPool以及相关api。...如果你看完了整个内容,我相信你在使用SoundPool进行播放音频,就不会出现无法播放,播放失败等情况了。 如果觉得本篇内容对你有一点点帮助,希望能够给我点个赞鼓励一下,谢谢。

59240

《熬夜整理》保姆级系列教程-玩转Wireshark抓包神器教程(4)-再识Wireshark

启用彩色将在捕获或加载捕获文件减慢新数据包显示速度。...单独窗口显示数据包详细信息和字节。有关详细信息。 Reload Ctrl+R 此菜单项允许您重新加载当前捕获文件。...准备作为过滤条件,功能与上面基本相同,只是不会立即进行过滤,只是准备过滤语法,后面点击执行过滤才会执行 解码为,将包配置用什么协议进行解析 追踪流,鼠标放到包上,可以进行对应流追踪过滤 专家信息,分析整个信息...Displayed 当前显示包数。 Marked 标记数据包数。当您标记了任何数据包显示。 Dropped 丢弃数据包数量仅在 Wireshark 无法捕获所有数据包显示。...具有选定协议字段状态栏 如果您在 “数据包详细信息” 窗格中选择了协议字段,则会显示此信息。 TIP 括号之间(在此示例中为 “ipv6.src”)是所选项目的显示过滤器字段。

1.3K31

Python可视化Dash教程简译(二)

我们经常会更新组件子节点以显示新文本或dcc.Graph组件图形以显示新数据,但我们也可以更新组件样式甚至更新dcc.Dropdown组件可用选项!...加载数据到内存中可能很昂贵,通过在应用程序开始时而不是在回调函数内部加载查询数据,可以确保我们只在应用程序启动执行此操作。当用户访问应用程序会与程序交互,数据(df)已经在内存当中了。...第一个回调函数根据第一个RadioItems组件中选定来更新第二个RadioItems组件可选项。...第二个回调函数options属性改变设置初始,将它设置为options数组中第一个 最后一个回调函数展示了每个组件选定。...如果更改了国家/地区RadioItems组件,Dash将会等待,直到cities组件也被更新了,才会调用最终回调函数。

5.6K20
领券