Flutter開發-機殼篩選網頁-續
簡介
網頁連結: 機殼篩選
本專案是我使用Flutter開發的第一個正式專案,功能是讓使用者可以篩選出符合自己需求的機殼,詳細介紹可以參考上一篇文章
後續
網頁連結: 【攻略】原價屋機殼篩選
在完成了上一篇文章的隔天,我把網站分享到了巴哈姆特 - 電腦應用綜合討論區,到現在也過了一個禮拜了,沒想到竟然已經有 10k 的瀏覽量,這幾天收到許多的建議,也因此對網頁進行了不少的更新改進,多了一些功能,因此想在這邊做一點紀錄。

新增功能
機殼邊長
原本在設計網頁時其實也有考慮到加入這個邊長篩選的功能,讓使用者可以判斷機殼是否適合放入指定空間,但是因為原價屋網頁上的機殼邊長順序並非固定的 寬 * 深 * 高 排序,因此難以去做判斷,而如果使用長度去做排序,因為不同的機殼外觀不同 (高>深 or 深>高),可能會造成誤判,就改以公升數進行篩選。

後來也收到許多人的建議加入此功能,最後採用了最長邊、次長邊、短邊的篩選方式,剩下的就交給使用者自行判斷了,以下是修改後的結果:

實現的方法就是在蒐集資料時利用 sort 函數將三邊長進行排序,存入三個變數後上傳到資料庫中儲存,之後在 Flutter 程式之中加入篩選三邊長的功能就好。
背插、全景機殼

這個功能是加在 「其他」 類型的篩選中,可以篩選出支援背插主板以及全景外觀的機殼,實現的方法相當簡單,就是在爬蟲時擷取是否出現關鍵字 「背插」 和 「全景」 即可。
調整功能
側板類型

原本的側板類型只有 側透、非側透、可替換 三種,也是有不少人建議加上非玻璃的側透類型,因為有些人只是不希望使用易碎的玻璃而已,而壓克力就是不錯的選項,因此我在篩選側板類型中多加了壓克力這個選項。
內附風扇數

一開始在做爬蟲時就有順便統計了機殼所內附的風扇數量,不過後來就懶得做出來實際的功能,只是將 「是否內附風扇」 加在「其他」 類型的篩選中,後來有人建議可以加入風扇數量的篩選,於是就將這個功能做出來了。
實現的部分是使用 Flutter 的 RangeSlider widget,讓使用者可以調整機殼內風扇數的範圍,並進行篩選。
CPU 高 & GPU 長

原本的功能只有做 CPU 高以及 GPU 長的下限,不過有人建議可以加上兩者的上限(雖然我還是不太了解原因),後來就把此功能補上,並將兩者的篩選欄位分開,方便使用。
硬碟支援

這個功能應該是最多人有建議加上的,要做出這個功能也是花了不少時間,和邊長的篩選功能一樣,也是一個我一開始有考慮做的功能,因為各個機殼對於硬碟的兼容性各不相同,也可能會因為顯卡長、電供尺寸不同而改變,除此之外,原價屋的網頁表示方式也相當抽象,因此我花了不少時間做整理,當然,最後篩選出的結果還是要由使用者自行判斷。
以下是部分程式碼(已省略重複內容,詳細程式碼可至 Github 專案中查看),可以看到光是 “3.5 or 5.25*” 就有不少寫法(前後對調、英文大小寫、“共用”…)需要去做判斷,而支援度的部分我是直接針對單一類型的硬碟取最大值,因此在兩種類型的硬碟同時做篩選時可能造成衝突,這也是需要使用者自行做判斷的原因。
1 | for i in range(len(drivesSupport)): |