日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

Flutter面试常见开发问题

發(fā)布時間:2025/3/19 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Flutter面试常见开发问题 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.


本文主要介紹Flutter面試常見開發(fā)問題

Flutter 使用了一種全新的方法,您可以使用 widgets代替 Views 。Android 中的 View 主要是布局的一個元素,但在 Flutter 中,Widget 幾乎就是一切。從按鈕到布局結(jié)構(gòu)的一切都是小部件。這里的優(yōu)勢在于可定制性。想象一下 Android 中的一個按鈕。它具有文本等屬性,可讓您向按鈕添加文本。但是 Flutter 中的按鈕不是將標(biāo)題作為字符串,而是另一個小部件。這意味著**在按鈕內(nèi)你可以有文本、圖像、圖標(biāo)和幾乎任何你可以想象的東西,**而不會打破布局限制。這也讓您可以非常輕松地制作自定義小部件,而在 Android 中制作自定義視圖是一件相當(dāng)困難的事情。

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

在某些方面,確實如此。但是 Flutter 社區(qū)中的很多人更喜歡代碼方式,但這并不意味著無法實現(xiàn)拖拽。如果你完全喜歡拖拽,那么 Flutter Studio 是我推薦的一個很棒的資源,它可以幫助你通過拖放生成布局。這是一個讓我印象深刻的工具,很想看看它是如何發(fā)展的。

鏈接:https : //flutterstudio.app

Flutter 是否像瀏覽器一樣工作?/ 它與基于 WebView 的應(yīng)用程序有何不同?

簡單地回答這個問題:您為 WebView 或類似運行的應(yīng)用程序編寫的代碼必須經(jīng)過多個層才能最終執(zhí)行。從本質(zhì)上講,Flutter 通過編譯為原生 ARM代碼以在兩個平臺上執(zhí)行,從而實現(xiàn)了跨越?!盎旌稀睉?yīng)用程序緩慢、緩慢,并且看起來與它們運行的平臺不同。Flutter 應(yīng)用程序的運行速度比它們的混合應(yīng)用程序快得多。此外,使用插件訪問原生組件和傳感器比使用無法充分利用其平臺的 WebView 更容易。

為什么 Flutter 項目中有 Android 和 iOS 文件夾?

Flutter 項目中主要有 3 個文件夾:lib、android 和 ios?!甽ib’ 負(fù)責(zé)處理您的 Dart 文件。Android 和 iOS 文件夾的存在是為了在各自的平臺上實際構(gòu)建應(yīng)用程序,并在其上運行 Dart 文件。它們還幫助您向項目添加權(quán)限和特定于平臺的功能。當(dāng)您運行 Flutter 項目時,它會根據(jù)運行的模擬器或設(shè)備進(jìn)行構(gòu)建,使用其中的文件夾進(jìn)行 Gradle 或 XCode 構(gòu)建。簡而言之,這些文件夾是整個應(yīng)用程序,它們?yōu)?Flutter 代碼的運行奠定了基礎(chǔ)。

為什么我的 Flutter 應(yīng)用這么大?

如果您運行過 Flutter 應(yīng)用程序,您就會知道它的速度很快。速度極快。它是如何做到的?在構(gòu)建應(yīng)用程序時,它不是只使用特定資源,而是實質(zhì)上需要所有資源。為什么這有幫助?因為如果我將一個圖標(biāo)從一個更改為另一個,則不必完全重建應(yīng)用程序。這就是 Flutter調(diào)試構(gòu)建如此龐大的原因。創(chuàng)建發(fā)布版本時,只會獲取所需的資源,并獲得我們更習(xí)慣的大小。Flutter 應(yīng)用程序仍然會比 Android 應(yīng)用程序大一點,但它相當(dāng)小,而且 Flutter 團(tuán)隊一直在尋找減少應(yīng)用程序大小的方法。

如果我是編程新手,想從移動端開發(fā)入手,應(yīng)該從 Flutter 開始嗎?

這有更多的兩部分答案。

  • Flutter 非常適合編寫代碼,并且在相同頁面上的代碼比 Android 或 iOS 應(yīng)用程序少得多。所以對于大多數(shù)應(yīng)用,我認(rèn)為不會有大問題。
  • 您需要記住的一件事是 Flutter 還依賴于 Android 和 iOS 項目,您至少需要熟悉其中的項目結(jié)構(gòu)。如果您想編寫任何本機(jī)代碼,您肯定需要在任一平臺或兩個平臺上的經(jīng)驗。
  • 我個人的意見是先學(xué)習(xí)一兩個月的 Android/iOS,然后從 Flutter 開始。

    什么是package和插件?

    package允許您將新的小部件或功能導(dǎo)入您的應(yīng)用程序。package和插件之間有一個小的區(qū)別。包通常是純粹用 Dart 編寫的新組件或代碼,而插件則可以使用本機(jī)代碼在設(shè)備端提供更多功能。通常在 DartPub 上,包和插件都被稱為包,只有在創(chuàng)建新包時才會明確提到區(qū)別。

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

    Pubspec.yaml 允許您定義您的應(yīng)用程序依賴的包,聲明您的資產(chǎn),如圖像、音頻、視頻等。它還允許您為您的應(yīng)用程序設(shè)置約束。對于 Android 開發(fā)者來說,這大致類似于 build.gradle 文件,但兩者之間的差異也很明顯。

    為什么第一個 Flutter 應(yīng)用構(gòu)建需要這么長時間?

    首次構(gòu)建 Flutter 應(yīng)用程序時,會構(gòu)建特定設(shè)備的 APK 或 IPA 文件。因此,使用 Gradle 和 XCode 構(gòu)建文件需要時間。下次重新啟動或熱加載應(yīng)用程序時,Flutter 基本上會在現(xiàn)有應(yīng)用程序之上修補(bǔ)更改,從而提供極快的刷新。

    注意:通過熱重載或重啟所做的更改不會保存在設(shè)備 APK 或 IPA 文件中。為確保您的應(yīng)用在設(shè)備上進(jìn)行所有更改,請考慮再次停止并運行該應(yīng)用。

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

    **簡單來說,“狀態(tài)”是小部件變量值的集合。**任何可以改變的東西,比如計數(shù)器計數(shù)、文本等,都可以成為 State 的一部分。想象一個計數(shù)器應(yīng)用程序,主要的動態(tài)是計數(shù)器計數(shù)。當(dāng)計數(shù)改變時,需要刷新屏幕以顯示新值。setState() 本質(zhì)上是一種告訴應(yīng)用程序使用新值刷新和重建屏幕的方法。

    什么是有狀態(tài)和無狀態(tài)小部件?

    TL;DR:允許您刷新屏幕的小部件是有狀態(tài)小部件。沒有狀態(tài)的小部件是無狀態(tài)的。

    更詳細(xì)地說,一個內(nèi)容可以改變的動態(tài)小部件應(yīng)該是一個有狀態(tài)的小部件。無狀態(tài)小部件只能在更改參數(shù)時更改內(nèi)容,因此需要在小部件層次結(jié)構(gòu)中的位置點上方完成。包含靜態(tài)內(nèi)容的屏幕或小部件應(yīng)該是無狀態(tài)小部件,但要更改內(nèi)容,需要有狀態(tài)。

    你如何處理 Flutter 代碼中的縮進(jìn)和結(jié)構(gòu)?

    Android Studio 提供了工具來簡化 Flutter 代碼的結(jié)構(gòu)化。主要的兩點是:

  • Alt + Enter/ Command + Enter:這使您可以輕松地包裝和刪除小部件以及在復(fù)雜的層次結(jié)構(gòu)中交換小部件。要使用它,只需將光標(biāo)指向小部件聲明并按下按鍵即可提供一些選項。這有時感覺像是天賜之物。
  • DartFMT:dartfmt 格式化您的代碼以保持干凈的層次結(jié)構(gòu)和縮進(jìn)。在您不小心移動了幾個括號后,它會使您的代碼更漂亮。
  • 為什么我們將函數(shù)傳遞給小部件?

    我們將一個函數(shù)傳遞給一個小部件,本質(zhì)上是說,“當(dāng)有事情發(fā)生時調(diào)用這個函數(shù)”。函數(shù)是 Dart 中的第一類對象,可以作為參數(shù)傳遞給其他函數(shù)。使用 Android (<Java 8) 等接口的回調(diào)對于簡單的回調(diào)有太多的樣板代碼。

    Java回調(diào):

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

    (注意,這只是設(shè)置監(jiān)聽器的代碼。定義按鈕需要單獨的 XML 代碼。)

    Dart equivalent:

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

    (Dart 既做聲明又設(shè)置回調(diào)。)

    這變得更加清晰和有條理,并幫助我們避免不必要的復(fù)雜化

    總結(jié)

    以上是生活随笔為你收集整理的Flutter面试常见开发问题的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。