Flutter - Scrum Poker應(yīng)用程序

歡迎來到我的故事阳懂,我如何在一天之內(nèi)創(chuàng)建一個Scrum Card App输涕。在本文中,我想向您展示創(chuàng)建Flutter應(yīng)用程序有多簡單棒拂。我的挑戰(zhàn)是在短時間內(nèi)創(chuàng)建最小的應(yīng)用程序。

首先玫氢,我首先要清晰地了解我們要實現(xiàn)的目標(biāo)帚屉。我目前在Scrum團隊工作,我們總是需要隨身攜帶用于短跑撲克的卡片漾峡。這些卡很舊攻旦,很臟,很多團隊經(jīng)常使用這些卡生逸,所以我決定一勞永逸地用應(yīng)用程序更改它牢屋。

Scrum撲克

如果您以前從未在Scrum團隊工作過,則可能從未聽說過Scrum Poker一詞槽袄。要解釋整個想法烙无,可能對于那個故事來說太多了,但是如果您有興趣遍尺,Ravindra Prasad撰寫了一篇關(guān)于該主題的出色文章截酷。

這就像真正的撲克,但是每個人都有相同的牌乾戏。

視覺指導(dǎo)

對我來說迂苛,在我的項目中三热,像原型一樣有視覺指導(dǎo)總是很有幫助的。這個原型可以是紙上的一幅畫三幻,也可以是一個成熟的原型就漾。對于本文,我使用Adobe XD創(chuàng)建了一個快速原型赌髓,以便向您展示它的外觀从藤,并為自己提供可視化支持。

這樣锁蠕,我們有了一個原型夷野,現(xiàn)在我們知道要創(chuàng)建什么了。現(xiàn)在我們已準(zhǔn)備好進行開發(fā)荣倾。首先悯搔,我們必須使用Flutter創(chuàng)建一個新項目。在Flutter網(wǎng)站上舌仍,有更多有關(guān)如何設(shè)置環(huán)境的信息妒貌。對于這個故事,我將使用帶有Flutter和Dart插件的Android Studio铸豁。

重組我們的樣板

在設(shè)置flutter項目之后灌曙,讓我們首先刪除所有不需要的注釋。我將主頁與主文件分開节芥,以便我們對應(yīng)用程序有更好的感覺在刺。這樣,我們?yōu)轫椖繕影鍘砹烁嘤唵瓮纺鳌T谖覀兊闹魑募序纪眨@應(yīng)該保留。

在“ myHomePage.dart”中相艇,您將找到用flutter項目初始化的有狀態(tài)“ MyHomePage”小部件颖杏。

下圖應(yīng)該是文件夾結(jié)構(gòu)。

我們的主頁

對于我們的第一個鏡頭坛芽,我們想使用主頁的現(xiàn)有Scaffold留储。這包含我們的Scrum卡和Flutter GridView。GridView使我們可以選擇對齊網(wǎng)格中的多個項目靡馁。GridView的count構(gòu)造函數(shù)為我們提供了開箱即用的功能欲鹏,以創(chuàng)建帶有Cards的Grid。

首先臭墨,我們初始化變量“ Fibonacci”,以便可以將數(shù)字包含在數(shù)組中膘盖。如果您仔細查看GridView的count構(gòu)造函數(shù)的子級胧弛,您會看到“ for循環(huán)”尤误。這不是很好嗎?我們可以在children數(shù)組內(nèi)部循環(huán)结缚,以將Fibonacci數(shù)組映射到占位符损晤。

太好了,網(wǎng)格看上去已經(jīng)非常有前途了红竭。您有沒有看到“占位符”小部件在這一部分中很方便尤勋?有了這個,我們就不必為卡創(chuàng)建任何東西了茵宪。但是最冰,結(jié)果已經(jīng)很明顯。占位符可以幫助我們構(gòu)建應(yīng)用程序稀火,而無需實際執(zhí)行任何操作暖哨。

現(xiàn)在我們已經(jīng)有了基本的結(jié)構(gòu),我們必須考慮如何顯示卡凰狞。幸運的是篇裁,F(xiàn)lutter已經(jīng)為我們提供了一些東西∩娜簦卡片小部件將幫助我們創(chuàng)建插入文本的卡片的出色可視化效果达布。由于卡不會更改,因此我們可以為其創(chuàng)建帶有圖標(biāo)或數(shù)字的無狀態(tài)小部件∮舛現(xiàn)在黍聂,它將位于“ MyHomePage”中。

手勢

現(xiàn)在是時候控制我們應(yīng)用程序的行為了粉渠。當(dāng)我們點擊卡片時分冈,它應(yīng)該從樹中刪除小部件,并用單個卡片小部件替換霸株。但是雕沉,這會更改“ MyHomePage”小部件的狀態(tài)。

為了實現(xiàn)這種點擊行為去件,我們首先必須用GestureController包圍Card元素坡椒。之后,我們必須在卡內(nèi)指定onTap事件尤溜。

現(xiàn)在倔叼,這將在控制臺的單獨行中打印卡上的每次單擊。

Downtime

好吧宫莱,我們已經(jīng)做到了丈攒。因此,讓我們休息一下,然后簡要回顧一下我們已經(jīng)創(chuàng)建的內(nèi)容巡验。

  • Scrum Card應(yīng)用程序的設(shè)計
  • 主頁
  • 一個ScrumCard小部件
  • 手勢和敲擊事件

我們需要做的下一步是在點擊后更改應(yīng)用程序的狀態(tài)际插。每當(dāng)點擊卡片時,我們都希望使用Big ScrumCard小部件替換主頁中的正文显设。

現(xiàn)在是困難的部分框弛。因此,請做好準(zhǔn)備捕捂,深吸一口氣瑟枫,然后開始吧!

狀態(tài)管理

Flutter中有兩種不同類型的小部件指攒。

  1. 無狀態(tài)小部件
  2. 有狀態(tài)的小部件

無狀態(tài)窗口小部件是始終根據(jù)其初始值顯示的窗口小部件慷妙。在其生命周期內(nèi),初始值不能更改幽七。另一方面景殷,有狀態(tài)窗口小部件包含真實狀態(tài),如果您更改狀態(tài)澡屡,則將重新呈現(xiàn)該窗口小部件猿挚。如果您想了解更多有關(guān)不同類型的部件隨意看看的文章通過迪帕克?

現(xiàn)在驶鹉,我們必須第一次處理小部件的狀態(tài)绩蜻。當(dāng)我們單擊按鈕時,“網(wǎng)格小部件”的狀態(tài)應(yīng)更改為大的“卡片小部件”室埋。這告訴我們办绝,我們的應(yīng)用程序中至少有兩個不同的狀態(tài)。為了跟蹤這些狀態(tài)姚淆,我們必須將當(dāng)前的“無狀態(tài)”小部件更改為“有狀態(tài)”小部件孕蝉。最簡單的方法是單擊無狀態(tài)小組件,然后使用IDE函數(shù)將無狀態(tài)小組件更改為有狀態(tài)小組件腌逢。

因為新的Widget現(xiàn)在是有狀態(tài)的降淮,所以我們可以更改其值,并且“ build”方法可以對這些不同的狀態(tài)做出反應(yīng)搏讶。

我們想要跟蹤要顯示的圖標(biāo)或卡上可見的文本的信息佳鳖,因此需要將其顯示為狀態(tài)。我稱該變量為“singleCardText”和“singleCardIcon”媒惕。此外系吩,我想擁有一個布爾值,該布爾值知道我是否必須顯示所有卡片或僅一張大卡片的主頁妒蔚。

請注意這一點穿挨,我在這里犯了一個大錯誤月弛,并將所有這些變量都放入了build方法。多次調(diào)用build方法絮蒿,并且每次調(diào)用它都會再次覆蓋值尊搬。

當(dāng)然叁鉴,這聽起來微不足道土涝,但是卻花了我一小時的時間。

The Exchange

現(xiàn)在幌墓,我們希望根據(jù)“isHomePage”值交換小部件但壮。因此,我們可以使用Flutter技能之一常侣。我們包圍了我們的GridView蜡饵。使用三元運算符的構(gòu)造函數(shù)計數(shù)。這將檢查isHomePage并將相應(yīng)的小部件添加到容器中胳施。

如果你被" ?和“:”在代碼中溯祸,我可以推薦您閱讀一篇關(guān)于Deven Joshi的“三元運算符”的文章。有了這些舞肆,我們就有機會將“isHomePage”更改為false焦辅,它將只顯示Padding(以及里面的內(nèi)容),或者我們將它保持為true椿胯,它將顯示GridView筷登。因此,我們需要“setState”方法哩盲。它允許我們非常容易地更改小部件的當(dāng)前狀態(tài)前方。

到目前為止很好。現(xiàn)在廉油,我們要執(zhí)行“ switchToCard”方法惠险,而不是點擊只在控制臺中打印內(nèi)容的位置。但是如何抒线?該方法必須存在于_HomePageState中班巩,而ScrumCard無法訪問該狀態(tài)?好吧十兢,讓我向您解釋一下趣竣,因為有一個相當(dāng)簡單的解決方案。我們只是將函數(shù)傳遞到ScrumCard小部件中旱物。每當(dāng)用戶現(xiàn)在在卡上點擊時遥缕,我們就會調(diào)用該方法并“通知”我們的父窗口小部件。

如果您對這些代碼片段進行了簡單的了解宵呛,您會發(fā)現(xiàn)ScrumCard調(diào)用了notifyParent方法单匣,實際上是switchToCard方法。這現(xiàn)在應(yīng)該可以幫助我們從具有多個Scrum卡的網(wǎng)格過渡到單個大的Scrum Versa。現(xiàn)在僅剩一步户秤,我們必須創(chuàng)建一個漂亮的Card UI码秉,該isUI將在isHomePage為false時生成。

正如您很可能已經(jīng)發(fā)現(xiàn)的那樣鸡号,我在此處添加了notifyParent的另一個函數(shù)转砖,以便我們可以交換回首頁。

現(xiàn)在鲸伴,卡和網(wǎng)格的開關(guān)應(yīng)該已經(jīng)可以工作了府蔗。為了進一步改善我們的應(yīng)用程序,我們可以使用“ AnimatedSwitcher ”汞窗。我從flutter團隊那里發(fā)現(xiàn)了這個很棒的視頻姓赤,這是一個完美的用例。您可能已經(jīng)猜到了AnimatedSwitcher仲吏,它可以幫助我們彼此交換兩個小部件不铆。它在這兩者之間添加了平滑的過渡,這看起來更加友好裹唆。您只需要在小時候就將三元運算符放在兩者之間誓斥,并給它一個Duration,過渡應(yīng)該花多長時間品腹。

好的岖食,讓我們運行模擬器或模擬器,看看應(yīng)用程序現(xiàn)在的外觀舞吭。

結(jié)論和下一步

現(xiàn)在泡垃,該應(yīng)用程序已經(jīng)解決了軟件工程中的一個重要問題。從現(xiàn)在開始羡鸥,我再也沒有將真實的卡從一個房間搬到另一個房間了蔑穴。我再也不需要抓住舊的有臭味的卡片,并將它們顯示給我的產(chǎn)品負責(zé)人惧浴。我們不想知道哪種液體接觸了這些臟污的卡片……

當(dāng)然存和,這僅僅是開始。有了本屆會議的知識衷旅,我們可以做更多的事情捐腿。該應(yīng)用程序展示了使用flutter創(chuàng)建一個功能完善的應(yīng)用程序有多么容易。

現(xiàn)在輪到您了柿顶。在下一篇文章之前茄袖,您面臨的挑戰(zhàn)是創(chuàng)建此應(yīng)用程序或從GitHub派生我的存儲庫,并通過少量附加功能擴展此應(yīng)用程序嘁锯。為了給您一些示例宪祥,您可以添加聂薪,

  • 從斐波那契數(shù)字更改為其他Scrum撲克數(shù)字成為可能
  • 創(chuàng)建所選卡的歷史記錄
  • 在過渡之間制作自定義動畫

如果您有任何反饋意見讓我知道,并且如果您對其他有趣的文章感興趣蝗羊,請隨時在Twitter上關(guān)注我或查看我的GitHub Repository藏澳。

翻譯自:https://medium.com/flutter-community/flutter-mobile-scrum-poker-app-c72d5d5514ea

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市耀找,隨后出現(xiàn)的幾起案子翔悠,更是在濱河造成了極大的恐慌,老刑警劉巖涯呻,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件凉驻,死亡現(xiàn)場離奇詭異,居然都是意外死亡复罐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門雄家,熙熙樓的掌柜王于貴愁眉苦臉地迎上來效诅,“玉大人,你說我怎么就攤上這事趟济÷彝叮” “怎么了?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵顷编,是天一觀的道長戚炫。 經(jīng)常有香客問我,道長媳纬,這世上最難降的妖魔是什么双肤? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任,我火速辦了婚禮钮惠,結(jié)果婚禮上茅糜,老公的妹妹穿的比我還像新娘。我一直安慰自己素挽,他們只是感情好蔑赘,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著预明,像睡著了一般缩赛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上撰糠,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天酥馍,我揣著相機與錄音,去河邊找鬼窗慎。 笑死物喷,一個胖子當(dāng)著我的面吹牛卤材,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播峦失,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼扇丛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了尉辑?” 一聲冷哼從身側(cè)響起帆精,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎隧魄,沒想到半個月后卓练,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡购啄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年襟企,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片狮含。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡顽悼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出几迄,到底是詐尸還是另有隱情蔚龙,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布映胁,位于F島的核電站木羹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏解孙。R本人自食惡果不足惜坑填,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望妆距。 院中可真熱鬧穷遂,春花似錦、人聲如沸娱据。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽中剩。三九已至忌穿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間结啼,已是汗流浹背掠剑。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留郊愧,地道東北人朴译。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓井佑,卻偏偏與公主長得像,于是被迫代替她去往敵國和親眠寿。 傳聞我的和親對象是個殘疾皇子躬翁,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容