![TOC]編程
一個常見的"評價列表頁",點擊"評價列表頁"中的任意一項跳轉進入"評價詳情頁"。在"評價詳情頁"咱們能夠看到該評論完整的評價內容和評價大圖,同時"評價列表頁"和"評價詳情頁"都帶有分享和點讚的功能。微信
外層網絡
main.dart入口函數調起CommentApp.dart這個App的工程入口架構
widgetsmvc
comment_list_item.dart和comment_widget_pub.dart是封裝的兩個視圖組件,一個是列表的每個item的樣式,另外一個是"評價詳情頁"和"評價列表頁"的底部操做欄(點贊,分享)樣式封裝app
screensiview
comment_detail.dart和comment_list.dart對應咱們的兩個頁面"評價詳情頁"和"評價列表頁"異步
mvcide
MVC模式中的Control類和Model類函數
model
comment_item_model.dart對應的是評價列表頁每個item背後的數據封裝
以評論中的點贊操做爲例
columnControl是comment_widget_pub.dart裏面的一個方法,封裝了一個底部操做欄的視圖,包含了"點贊"和"分享"的功能。
箭頭處的Con().praise1方法被View的onTap事件觸發,是很是常見的一種從View到Control創建鏈接的調用方式
外層
同上
widgets
同上
screens
同上
mvp
以"評價列表頁」爲例,comment_list.dart實現了comment_list_iview.dart中的接口(如 onZanValueUpdate方法)而comment_list_presenter.dart實現了requestZan等異步方法。
model
同上
以評論中的點贊操做爲例
外層
同上
actions
定義了各類操做類型,能夠認爲是一個狀態變動的代號:PraiseAction(點贊操做),ShareAction(分享操做),FetchListAction(取列表數據)等
screens
同上
reducer
actions包下定義了狀態變動的代號,而reducer裏面就是描述了具體的狀態是如何進行變動的,一個reducer一般對應一個或多個action。
middleware
middleware是在action觸發後且reducer到達前被執行,這裏主要是爲了插入一個請求評價列表數據的異步方法。
model
比以前多了一個app_state.dart,它是Store所存儲的狀態描述。
以評論中的點贊操做爲例
關注『Flutter編程指南』微信公衆號,公衆號消息界面回覆『widget』『dart』『存儲』『插件』等獲取更多精準信息,也可回覆『三種架構』獲取本篇三種架構相關的demo源碼。