当前位置: 首页 > news >正文

Flutter面试常见开发问题



本文主要介绍Flutter面试常见开发问题

Flutter 使用了一种全新的方法,您可以使用 widgets代替 Views 。Android 中的 View 主要是布局的一个元素,但在 Flutter 中,Widget 几乎就是一切。从按钮到布局结构的一切都是小部件。这里的优势在于可定制性。想象一下 Android 中的一个按钮。它具有文本等属性,可让您向按钮添加文本。但是 Flutter 中的按钮不是将标题作为字符串,而是另一个小部件。这意味着**在按钮内你可以有文本、图像、图标和几乎任何你可以想象的东西,**而不会打破布局限制。这也让您可以非常轻松地制作自定义小部件,而在 Android 中制作自定义视图是一件相当困难的事情。

拖拽不是比在代码中制作布局更容易吗?

在某些方面,确实如此。但是 Flutter 社区中的很多人更喜欢代码方式,但这并不意味着无法实现拖拽。如果你完全喜欢拖拽,那么 Flutter Studio 是我推荐的一个很棒的资源,它可以帮助你通过拖放生成布局。这是一个让我印象深刻的工具,很想看看它是如何发展的。

链接:https : //flutterstudio.app

Flutter 是否像浏览器一样工作?/ 它与基于 WebView 的应用程序有何不同?

简单地回答这个问题:您为 WebView 或类似运行的应用程序编写的代码必须经过多个层才能最终执行。从本质上讲,Flutter 通过编译为原生 ARM代码以在两个平台上执行,从而实现了跨越。“混合”应用程序缓慢、缓慢,并且看起来与它们运行的平台不同。Flutter 应用程序的运行速度比它们的混合应用程序快得多。此外,使用插件访问原生组件和传感器比使用无法充分利用其平台的 WebView 更容易。

为什么 Flutter 项目中有 Android 和 iOS 文件夹?

Flutter 项目中主要有 3 个文件夹:lib、android 和 ios。‘lib’ 负责处理您的 Dart 文件。Android 和 iOS 文件夹的存在是为了在各自的平台上实际构建应用程序,并在其上运行 Dart 文件。它们还帮助您向项目添加权限和特定于平台的功能。当您运行 Flutter 项目时,它会根据运行的模拟器或设备进行构建,使用其中的文件夹进行 Gradle 或 XCode 构建。简而言之,这些文件夹是整个应用程序,它们为 Flutter 代码的运行奠定了基础。

为什么我的 Flutter 应用这么大?

如果您运行过 Flutter 应用程序,您就会知道它的速度很快。速度极快。它是如何做到的?在构建应用程序时,它不是只使用特定资源,而是实质上需要所有资源。为什么这有帮助?因为如果我将一个图标从一个更改为另一个,则不必完全重建应用程序。这就是 Flutter调试构建如此庞大的原因。创建发布版本时,只会获取所需的资源,并获得我们更习惯的大小。Flutter 应用程序仍然会比 Android 应用程序大一点,但它相当小,而且 Flutter 团队一直在寻找减少应用程序大小的方法。

如果我是编程新手,想从移动端开发入手,应该从 Flutter 开始吗?

这有更多的两部分答案。

  1. Flutter 非常适合编写代码,并且在相同页面上的代码比 Android 或 iOS 应用程序少得多。所以对于大多数应用,我认为不会有大问题。
  2. 您需要记住的一件事是 Flutter 还依赖于 Android 和 iOS 项目,您至少需要熟悉其中的项目结构。如果您想编写任何本机代码,您肯定需要在任一平台或两个平台上的经验。

我个人的意见是先学习一两个月的 Android/iOS,然后从 Flutter 开始。

什么是package和插件?

package允许您将新的小部件或功能导入您的应用程序。package和插件之间有一个小的区别。包通常是纯粹用 Dart 编写的新组件或代码,而插件则可以使用本机代码在设备端提供更多功能。通常在 DartPub 上,包和插件都被称为包,只有在创建新包时才会明确提到区别。

什么是 pubspec.yaml 文件,它有什么作用?

Pubspec.yaml 允许您定义您的应用程序依赖的包,声明您的资产,如图像、音频、视频等。它还允许您为您的应用程序设置约束。对于 Android 开发者来说,这大致类似于 build.gradle 文件,但两者之间的差异也很明显。

为什么第一个 Flutter 应用构建需要这么长时间?

首次构建 Flutter 应用程序时,会构建特定设备的 APK 或 IPA 文件。因此,使用 Gradle 和 XCode 构建文件需要时间。下次重新启动或热加载应用程序时,Flutter 基本上会在现有应用程序之上修补更改,从而提供极快的刷新。

注意:通过热重载或重启所做的更改不会保存在设备 APK 或 IPA 文件中。为确保您的应用在设备上进行所有更改,请考虑再次停止并运行该应用。

state是什么意思?什么是 setState()?

**简单来说,“状态”是小部件变量值的集合。**任何可以改变的东西,比如计数器计数、文本等,都可以成为 State 的一部分。想象一个计数器应用程序,主要的动态是计数器计数。当计数改变时,需要刷新屏幕以显示新值。setState() 本质上是一种告诉应用程序使用新值刷新和重建屏幕的方法。

什么是有状态和无状态小部件?

TL;DR:允许您刷新屏幕的小部件是有状态小部件。没有状态的小部件是无状态的。

更详细地说,一个内容可以改变的动态小部件应该是一个有状态的小部件。无状态小部件只能在更改参数时更改内容,因此需要在小部件层次结构中的位置点上方完成。包含静态内容的屏幕或小部件应该是无状态小部件,但要更改内容,需要有状态。

你如何处理 Flutter 代码中的缩进和结构?

Android Studio 提供了工具来简化 Flutter 代码的结构化。主要的两点是:

  1. Alt + Enter/ Command + Enter:这使您可以轻松地包装和删除小部件以及在复杂的层次结构中交换小部件。要使用它,只需将光标指向小部件声明并按下按键即可提供一些选项。这有时感觉像是天赐之物。
  2. DartFMT:dartfmt 格式化您的代码以保持干净的层次结构和缩进。在您不小心移动了几个括号后,它会使您的代码更漂亮。

为什么我们将函数传递给小部件?

我们将一个函数传递给一个小部件,本质上是说,“当有事情发生时调用这个函数”。函数是 Dart 中的第一类对象,可以作为参数传递给其他函数。使用 Android (<Java 8) 等接口的回调对于简单的回调有太多的样板代码。

Java回调:

button.setOnClickListener(new View.OnClickListener() {@overridepublic void onClick(View view) {// Do something here}}
);

(注意,这只是设置监听器的代码。定义按钮需要单独的 XML 代码。)

Dart equivalent:

FlatButton(onPressed: () {// Do something here}
)

(Dart 既做声明又设置回调。)

这变得更加清晰和有条理,并帮助我们避免不必要的复杂化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-35355.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

【论文阅读笔记】Partial Convolution based Padding

论文地址&#xff1a;https://arxiv.org/abs/1811.11718 代码地址&#xff1a;https://github.com/NVIDIA/partialconv 论文小结 本文提出一种有效地解决因padding造成的无效信息增加的方案。   本文提出的解决方案借鉴于partial convolution的思想&#xff0c;以此一起解决…...

用 Python 进行 OCR 图像识别

数据采集就怕遇到图片,只能看不能复制怎么办。手动将文字提取出来,要耗费很大的工作量。 例如下图,某楼盘的一房一价表,怎么样发现单价低位的房子?光凭肉眼很难发现吧,能否让计算机进行文字的识别,然后再对这些数值型信息进行数据分析? 首先把图片中的单价提取出来, …...

大端小端存储二进制与字节的转换

大端小端二进制与字节的转换 单位换算 位&#xff1a;“位(bit)”是电子计算机中最小的数据单位。每一位的状态只能是0或1。 字节&#xff1a;8个二进制位构成1个“字节(Byte)”&#xff0c;它是存储空间的基本计量单位。1个字节可以储存1个英文字母或者半个汉字&#xff0c…...

5个实用提速深度学习模型的方法

您是否通过深度学习模型获得了良好的准确性&#xff0c;却发现推理时间不足以部署到生产环境中&#xff1f;您是否对如何优化模型的推理速度迷失了方向&#xff1f;那么这篇文章是给你的。众所周知&#xff0c;数据科学项目有一个奇特的特性&#xff0c;即项目者需要不断转换关…...

Linux系统中安装MySQL

文章目录提前须知Linux版本的MySQL下载卸载系统自带的数据库安装前准备解压MYSQL安装包创建MYSQL用户和用户组创建data文件夹修改MYSQL目录的归属用户准备MYSQL的配置⽂件正式开始安装MYSQL复制启动脚本到资源目录设置MySQL系统服务并开启⾃启启动MySQLD将MySQL的BIN目录加入PA…...

(更新时间)2021年6月3日 商城高并发秒杀系统(.NET Core版) 24-性能优化-nginx负载均衡优化

一、关于Nginx的负载均衡 在服务器集群中&#xff0c;Nginx起到一个代理服务器的角色&#xff08;即反向代理&#xff09;&#xff0c;为了避免单独一个服务器压力过大&#xff0c;将来自用户的请求转发给不同的服务器。 二、Nginx负载均衡策略 负载均衡用于从“upstream”模…...

webui自动化测试框架(2)——对基本操作进行封装common

接上篇&#xff1a;webui自动化测试框架&#xff08;1&#xff09;——框架介绍 封装driver.py: driver的初始化&#xff0c;查找元素&#xff0c;点击元素&#xff0c;输入内容&#xff0c;切换iframe&#xff0c;切换Windows等 1.类&#xff0c;构造函数init里面适配浏览器…...

Python学习日记3

今天换了一个视频资源学习&#xff0c;因为发现之前的教学视频讲的是python2&#xff0c;python2跟现在的python3差别很大&#xff0c;所有换了一个平台学习。 今天学习内容主要是把python重新从头看了一遍&#xff0c;重新学习了一下&#xff0c;补充了关系运算符的知识&…...

如何用Python快速爬取小姐姐的美图

最近有一个小伙伴拿一个python代码来问我为什么报错&#xff1f; 我仔细一看&#xff1a;是用来爬取某个网站妹子图的代码&#xff0c;结果发现那个网站已经404了&#xff0c;当然爬不到了。 其实很多初学者都喜欢拿网上的案例作为练习&#xff0c;但是我们的爬虫可能会对一些…...

CentOS8安装activeMQ

Active简介 ActiveMQ是Apache软件基金会所研发的开放源代码消息中间件&#xff1b;由于ActiveMQ是一个纯Java程序&#xff0c;因此只需要操作系统支持Java虚拟机&#xff0c;ActiveMQ便可执行。 它解决了下面的问题&#xff1a; 做到系统解耦&#xff0c;当新的模块接进来时&am…...

leetcode刷题笔记 322.零钱兑换【中等】

1、广度优先搜索 int coinChange(vector<int>& coins, int amount) {if (amount 0)return 0;int n coins.size();vector<int> flags(amount);queue<int> q;q.push(amount);int count 0;while (!q.empty()) {count;int s q.size();for (int i 0; i …...

wordpress新创建文章404问题解决

修改httpd.conf 找到AllowOverride None修改为ALL...

[高维随机矩阵-2]

本系列主要按照《Introduction to random matrices theory and practice》进行&#xff0c;后续不再一一声明。每次使用新资料&#xff0c;都会在第一次使用时声明&#xff0c;后续也不再一一生明。 1. 本书目标读者是绝对的零基础人员。 2.随机矩阵理论random matirx theory…...

EasyExcel + Vue +Springboot 前后端联动,快捷导出Excel文件

预期效果&#xff1a;前后台联动&#xff0c;即点击“导出Excel”按钮后弹出下载框 导出效果&#xff1a; 1. 引入依赖 <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.6</version>…...

优质ip代理怎么使用?

目前&#xff0c;大家上网越来越依赖于代理IP&#xff0c;代理IP的应用范畴正在逐步扩展。对于因特网这个巨大的网站空间&#xff0c;大家一样期待着这其中的标准和实际中的一样&#xff0c;因此也期待着自己的个人信息能在互联网上得到最大的利益维护。但是事实上由于互联网是…...

windows下python3.5+安装scrapy与创建项目

scrapy框架的安装与创建项目 scrapy安装&#xff1a; 相信第一次安装scrapy框架都会遇到各种安装不上的问题&#xff01;哈哈&#xff0c;别问我为啥知道&#xff01; 那我分享下我是如何安装scrapy框架的。 首先安装scrapy框架之前需要先安装几个依赖的库 依照顺序分别是 z…...

docker搭建LDAP统一用户认证

1. 安装LDAP docker run -dit \ -p 389:389 \ -v /data/ldap/ldap:/var/lib/ldap \ -v /data/ldap/slapd.d:/etc/ldap/slapd.d \ --name ldap \ --env LDAP_TLSfalse \ --env LDAP_ORGANISATION"pibigstar" \ --env LDAP_DOMAIN"pibigstar.com" \ --env LD…...

python数据分析——如何用python连接远程数据库

本文将以SQLite、MySQL&#xff0c;PostgreSQL为例讲解python怎样连接远程数据库并执行相关数据库操作。 SQLite SQLite可能是与Python连接的最方便的数据库&#xff0c;因为我们不需要安装任何外部Python SQL模块即可使用。默认情况下&#xff0c;Python会自带一个名为sqlite…...

在 IntelliJ IDEA 中为自己设计的类库生成 JavaDoc

因为某个项目需要&#xff0c;为团队其他兄弟姐妹开发了一个 XML 分析处理器&#xff0c;并将其设计为一个类库&#xff0c;提供相应的 API 接口。为了方便大家的使用&#xff0c;需要生成对应的 JavaDoc 帮助文档&#xff0c;就像 JavaSE 标准库提供的 JavaDoc 那样。我的开发…...

奔腾(BNTN) 380功放+纽约至尊 套装家庭影院

奔腾(BNTN) 380功放+纽约至尊 套装家庭影院送美诗特TA20无线话筒1套+自拍神器杆! DTS解码数字功放 HDMI、光纤、同轴多组输入输出 USB、蓝牙播放功能...

LeetCode 736. Parse Lisp Expression

给出类似于lisp的表达式&#xff08;前序表达式&#xff09;&#xff0c;新加入了let赋值语句 注意&#xff1a;把每一句子表达式都抽象成了Exp对象&#xff0c;一个父exp包含了1个或者多个子Exp&#xff0c;从后向前遍历压栈&#xff0c;到最后统一出栈计算&#xff0c;妙啊&…...

Python numpy.unpackbits函数方法的使用

NumPy&#xff08;Numerical Python的缩写&#xff09;是一个开源的Python科学计算库。使用NumPy&#xff0c;就可以很自然地使用数组和矩阵。NumPy包含很多实用的数学函数&#xff0c;涵盖线性代数运算、傅里叶变换和随机数生成等功能。本文主要介绍一下NumPy中unpackbits方法…...

什么是状态模式

...

Linux的概述

Linux的概述&#xff1a; Unix Unix是一个强大的多用户、多任务操作系统 于1969年在AT&T的贝尔实验室开发 UNIX的商标权由国际开放标准组织&#xff08;The Open Group&#xff09;所拥有 UNIX操作系统是商业版&#xff0c;需要收费&#xff0c;价格比Microsoft Windows正…...

6_游戏框架搭建

游戏框架搭建 目标 —— 使用 面相对象 设计 飞机大战游戏类 目标 明确主程序职责实现主程序类准备游戏精灵组 01. 明确主程序职责 回顾 快速入门案例&#xff0c;一个游戏主程序的 职责 可以分为两个部分&#xff1a; 游戏初始化游戏循环 根据明确的职责&#xff0c;设计…...

DDD领域驱动设计学习笔记

...

gRPC-go源码剖析五十五之客户端一侧,是如何处理取消功能的?

本篇文章我们深入源码,重点分析一下grpc客户端一侧是如何来处理取消功能的; 1、取消功能是如何触发的?我们以客户端测试用例说明; 进入examples/features/cancellation/client/main.go文件中 1.func main() {2. //---省略掉不相关代码3. c := pb.NewEchoClient(conn...

黑马-数据结构

一、数据结构与算法概述 1.1. 什么是数据结构 1.1.1. 数据结构的内容 一般而言&#xff0c;数据结构的选择首先会从抽象数据类型的选择开始。一个设计良好的数据结构&#xff0c;应该在尽可能使用较少的时间与空间资源的前提下&#xff0c;为各种临界状态下的运行提供支持。数…...

PCB设计中电流与线宽的关系

原文链接&#xff08;点击原文链接更多精彩学习文章和学习内容&#xff09;&#xff1a;http://blog.bools.cn/archives/1262 PCB设计中电流与线宽的关系一、PCB设计铜铂厚度、线宽和电流关系二、PCB电流与线宽三、从图像中确定线宽四、 经验公式五、在PCB设计中线宽选择的经验…...

Redis 内存淘汰机制

Redis 内存淘汰机制 【问题一】 过期字典的方法很好&#xff0c;但还是有可能会出问题。因为定期删除和惰性删除还是有可能造成大量过期的 key 没被删除&#xff0c;堆积在内存中。非常容易就 内存溢出了 Out of memory。 【问题二】 如何保证 Redis 中的数据都是热点数据 &am…...

Spark环境搭建Standalone模式

2.4 Standalone模式 在Standalon模式中&#xff0c;Spark集群由Master节点和Worker节点构成&#xff0c;使用内置的Standalon框架进行资源管理。Spark程序通过与Master节点交互&#xff0c;申请所需资源。Worker节点负责具体的Executor的启动运行。 Standadlon模式的程序执行…...

flink的Standalone-HA模式安装

前言 本文使用flink1.14.5版本&#xff0c;介绍standalone-HA模式的安装。 此模式时高可用架构&#xff0c;采用zookeeper协调多个JobManager&#xff0c;保持每时每刻有一个运行中的JobManager,其余JobManager处理stand by状态。 因为涉及到运行过程中的状态数据的存储&…...

大数据Flink(四):Standalone独立集群模式

文章目录 Standalone独立集群模式 原理 操作 1.集群规划:...

Standalone模式两种提交任务方式

第一种方式Standalone-client提交任务方式 提交命令-方式1&#xff1a; ./spark-submit --master spark://node1:7077 --class org.apache.spark.examples.SparkPi ../lib/spark-examples-1.6.0-hadoop2.6.0.jar 1000 提交命令-方式2&#xff1a; ./spark-submit --master…...

Spark集群环境搭建(standalone模式)

Spark集群环境搭建&#xff08;standalone模式&#xff09;1. 实验室名称&#xff1a;2. 实验项目名称&#xff1a;3. 实验学时&#xff1a;4. 实验原理&#xff1a;5. 实验目的&#xff1a;6. 实验内容&#xff1a;7. 实验器材&#xff08;设备、虚拟机名称&#xff09;&#…...

BL200EC如何与欧姆龙相连

1、欧姆龙 NX1P2 的 Port1 接到电脑的网口&#xff0c;Port2 接到 BL200EC 的 ETH1 网口。 欧姆龙 NX1P2 和 BL200EC 通电。 2、打开 Sysmac Studio 软件&#xff0c;新建工程&#xff0c;选择 NX1P2-9024DT&#xff0c;点击创建。 ​ 编辑切换为居中 添加图片注释&#xf…...

Flink环境搭建(standalone模式)

本文开头附:Flink 学习路线系列 ^ _ ^ 1.Flink环境搭建 1.1 架构说明(standalone模式) standalone 是 Flink 自带的一个分布式集群,它不依赖其他的资源调度框架、不依赖 yarn 等。Spark也有一个自带的分布式资源调度模型,也叫作 standalone。 standalone模式进程名介绍: …...

Django migrate 命令

Django migrate 命令 初始化app models 表&#xff1a;python manage.py makemigrations (所有模型)初始化app 某个模块&#xff1a;python manage.py makemigrations app_name迁移升级表&#xff1a;python manage.py migrate迁移某个app: python manage.py migrate app_name…...

yii migrate

yii migrateyii migrate --migrationPathvendor/mdmsoft/yii2-admin/migrations yii migrate --migrationPathmdmsoft/yii2-admin/migrations...

redis-migrate-tool使用详解

前言 redis-migrate-tool 是维品会开源的一款redis数据迁移工具&#xff0c;基于redis复制&#xff0c;快速&#xff0c;稳定&#xff0c;github地址为&#xff1a;https://github.com/vipshop/redis-migrate-tool 快速。多线程。基于redis复制。实时迁移。迁移过程中&#x…...

php artisan migrate 指定表,Laravel 创建指定表 migrate的例子

网上找了很多资料&#xff0c;都很坑爹&#xff0c;说是要把之前的表都给删掉&#xff0c;然后重新运行&#xff0c;有的说要指定database的文件路径&#xff0c;都不管用。php artisan migrate:resetphp artisan migrate这样的话我之前的数据不都是白搞的了&#xff1f;&#…...

laravel migrate

1、已有数据库生成laravel migrations迁移文件 1&#xff09;安装sequel pro build版本&#xff0c;支持mysql 8&#xff0c;地址&#xff1a; https://sequelpro.com/test-builds 2&#xff09;安装插件&#xff0c;https://github.com/cviebrock/sequel-pro-laravel-export…...

golang数据库迁移工具golang-migrate使用

1 项目地址 https://github.com/golang-migrate/migrate 2 使用情景 一些项目功能会涉及到数据库和代码逻辑的修改&#xff0c;对于数据库的修改&#xff0c;虽然 gorm 之类的工具能够在代码里面适配大部分情况&#xff0c;但是不能覆盖所有数据库变更情况&#xff0c;而且也…...

php artisan migrate,laravel 5.1下php artisan migrate的使用注意事项总结

PHP artisan migrate命令是laravel十分重要的问题&#xff0c;但在使用时需要注意几个情况&#xff1a;(1)在migration文件夹下创建一张新的表&#xff0c;要使用php artisan make:migration语句php artisan已经拥有强大的功能&#xff0c;就不要自己新建一个表(2)composer dum…...

redis-migrate-tool数据迁移工具测试

工具特性 快速多线程基于redis复制实时迁移迁移过程中&#xff0c;源集群不影响对外提供服务异构迁移支持Twemproxy集群&#xff0c;redis cluster集群&#xff0c;rdb文件 和 aof文件。过滤功能当目标集群是Twemproxy&#xff0c;数据会跳过Twemproxy直接导入到后端的redis迁…...

jQuery Migrate 插件用法

jQuery Migrate 插件用法 jQuery Migrate是应用迁移辅助插件&#xff0c;是用于高级版本兼容低级版本辅助插件。 例如jQuery版本用的是1.x&#xff0c;计划升级到3.x&#xff0c;就可以在页面删除1.x版本&#xff0c;换成3.x版本&#xff0c;如果有脚本错误&#xff0c; 就引入…...

Django——记一次migrate错误

场景&#xff1a;将项目衍生另一版本&#xff0c;大部分逻辑未改变。创建数据库时应保留 django_migrations django_content_type auth_permission 三个表数据&#xff0c;因某些原因未保存&#xff0c;导致后来执行新的migrate时发生错误 django_migrations 表保留的是历史mi…...

php artisan migrate 报错,laravel执行php artisan migrate报错怎么办

laravel执行php artisan migrate报错是因为没有开启扩展“php_pdo_mysql.dll”&#xff0c;其解决办法就是打开“php.ini”文件并开启“php_pdo_mysql.dll”扩展即可。laravel执行php artisan migrate报错怎么办&#xff1f;报错一$ php artisan migrateIlluminate\Database\Qu…...

migrate-mongo实现对mongo数据库执行脚本版本控制

描述&#xff1a; migrate-mongo是一个js模块&#xff0c;通过migrate-mongo可以实现远程操作mongodb数据库。其中执行脚本的版本控制是通过配置文件进行远程MongoDB数据库连接配置&#xff0c;执行时在远程数据库下创建一个默认changelog集合&#xff0c;将执行文件记录存储下…...

php artisan migrate,关于laravel 5.1下php artisan migrate的使用

这篇文章主要给大家总结介绍了在laravel 5.1下php artisan migrate的使用注意事项&#xff0c;文中介绍的非常详细&#xff0c;对大家使用php artisan migrate具有一定的参考学习价值&#xff0c;需要的朋友们下面来一起看看吧。PHP artisan migrate命令是laravel十分重要的问题…...