【文章內容使用 Gemini 1.5 Pro 自動產生】
GSoC ‘21:為 Flutter 建立桌面樣本
Google Summer of Code (GSoC) 是一個由 Google 贊助的開源夏季程式。在此程式期間,學生在開源組織的指導下進行專案。
這是 Dart 團隊第二次作為 GSoC 的指導組織參與。不幸的是,由於指導老師的可用性問題,今年的 點子列表 上沒有任何 Flutter 專案。由於這是我的第二次參與 GSoC,我聯絡了去年的指導老師 Brett,看看是否有機會參與一個專案。在與他以及組織管理員討論後,我找到了一個可以參與的專案。
此部落格展示了我為專案所做的工作。查看今年 Dart 下的所有專案。所有產生的原始碼都位於 GitHub 儲存庫中,您可以透過查看個別的拉取請求 (PR) 來查看工作的進展。
專案詳情:Flutter 桌面工具
今年,在 Flutter Engage 中,Flutter 桌面支援的 beta 快照已包含在穩定版本中。這導致需要為 samples 儲存庫建立一個桌面樣本,該樣本日後可以在桌面應用程式商店(如 macOS App Store、Microsoft Store 和 Linux Snap Store)上發佈。在與 Brett 和團隊討論後,我們決定建立一個桌面樣本,它也將是一個工具,可以幫助開發人員管理其專案的 linting 規則。請查看 GitHub 上的 linting_tool 。
該應用程式使用 Dart 團隊從 dart-lang/linter 儲存庫中託管的 linting 規則,並且該應用程式可以執行以下操作:
顯示可用的 Dart linting 規則列表。
您可以從 API 獲取 linting 規則列表。該應用程式使用 flutter_markdown 套件來格式化詳細資訊和程式碼片段。
相關 PR:#856
將規則儲存到不同的設定檔。
您可以為不同類型的專案建立不同的規則設定檔。該應用程式使用 hive 資料庫來維持持久性儲存。
相關 PR:#860
修改和匯出設定檔。
設定檔可以根據您的喜好進行修改,然後匯出到 Flutter 專案中,作為 analysis_options.yaml 檔案。 套件 yaml、json2yaml 和 file_selector 用於完成此操作。
顯示預設設定檔。
您可以查看 effective_dart、pedantic、lints 和 flutter_lints 使用的預設設定檔列表。
相關 PR:**#871**
若要查看專案在 GSoC 期間的進展,請查看 這組 PR。
我還想為專案添加一些其他內容。兩項主要内容是:能夠從現有的 analysis_options.yaml 檔案載入設定檔,以及能夠在規則列表中搜索特定規則。我還正在製作一個新的影片系列,將涵蓋如何部署 Flutter 桌面應用程式。影片系列製作完成後,我會更新此部落格,也會在 Twitter 帳戶 上分享。
經驗
我這次的 Google Summer of Code (GSoC) 經驗比去年更好。(查看 Learn testing with the new Flutter sample 以閱讀更多有關我去年參與的專案的資訊。)我認為今年的經驗更好,因為專案更具技術性,涵蓋了更多概念,並且與我之前從未參與過的內容相關。這次我也認識團隊中的更多人。我認為 GSoC 將會是我永遠不會忘記的人生的一部分。
指導
Brett 一直都在,幫助我解決所有問題和阻礙。當我需要更多時間來處理其他承諾(如學校、其他工作和家庭相關事項)時,他非常理解。我認為最棒的是,他給了我完全的自由去探索事物,如果我認為某些內容對專案來說是寶貴的補充,我就可以調整專案的範圍。這次我做了一件很酷的事情,就是在每次每周會議結束時,我問他一些與專案無直接關聯的一般軟體工程相關的問題,例如「Google 如何處理估計?」和「你對遠端工作怎麼看?」。這幫助我學習了一些與程式設計無關的軟體產業知識。我強烈建議你在實習或 GSoC 類專案期間嘗試一下。而且,是的,他仍然是我合作過的最酷的人。
學習
學習是開源軟體最棒的部分。我這次做的事情,很多都無法透過 Google 搜尋找到答案。我閱讀了大量的程式碼,找出不同的套件如何執行相同的事情,以及它們之間的差異模式。我還學會了如何在大量可用的套件中為專案找到合適的套件。由於這個類別對我來說是全新的,因此這次的經驗幫助我在短時間內學到很多東西。
挑戰
我這次遇到了一些挑戰,從中學到了一些經驗。第一個挑戰與時間表有關。今年,GSoC 的時間表縮短了一半,這迫使我們重新排序優先順序,跳過許多可能會成為專案中寶貴補充的功能。其他挑戰是:處理一個全新的類別,以及在一個不太流行的類別中,找到關於如何執行某些事情的良好資源。
結語
在過去的一年中,我與 Flutter 和 samples 儲存庫合作,獲得了難以置信的經驗。我想要感謝 Brett、Flutter 團隊以及 GSoC 團隊。
關於作者:Abdullah 是一位來自印度浦那的電腦工程應屆畢業生。他在過去 4 年中一直在開發行動應用程式,並且喜歡與行動應用程式相關的內容合作。您可以在 Twitter、LinkedIn 和 GitHub 上聯繫他.
GSoC ‘21:為 Flutter 建立桌面樣本 最初發佈在 Flutter 上的 Medium,人們在那裡透過突出顯示和回應這個故事來繼續討論。