ChangeNotifierProvider、ChangeNotifier、Consumer的關(guān)系

成都創(chuàng)新互聯(lián)專業(yè)提供成都主機(jī)托管四川主機(jī)托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價(jià)格,機(jī)房位于中國(guó)電信/網(wǎng)通/移動(dòng)機(jī)房,IDC機(jī)房托管服務(wù)有保障!
1、ChangeNotifierProvider的父類ListenableProvider,ListenableProvider中實(shí)現(xiàn)了_startListening方法,_startListening主要是將Element的刷新方法添加到ChangeNotifier中的_listeners中
2、ListenableProvider將startListening傳入其父類InheritedProvider,InheritedProvider主要是創(chuàng)建delegate = _CreateInheritedProvider。這個(gè)delegate就是_CreateInheritedProvider中delegate.startListening中的delegate
1、ChangNotifier負(fù)責(zé)更新UI
ChangeNotifier中notifyListeners,通過(guò)遍歷_listeners,實(shí)現(xiàn)強(qiáng)制刷新UI
1、Consumer:包裹待刷新UI,在buildWithChild中將Provider.ofT(context)傳入builder方法
2、解析 Provider.ofT(context)
Provider.ofT(context)是獲取ChangeNotifier對(duì)象的方法
Provider.of中通過(guò)傳入的context,獲取父視圖為inheritedElement的對(duì)象
獲取到inheritedElement,通過(guò)inheritedElement.getValue的方式獲取ChangeNotifier對(duì)象
7、繼續(xù)查看inheritedElement?.value。通過(guò)斷點(diǎn)可以進(jìn)入_CreateInheritedProvider 類中g(shù)et Value方法。調(diào)用startListening將當(dāng)前Consumer包裹的element添加到Prorivder的_listeners數(shù)組中
通過(guò)調(diào)用notifyListeners()來(lái)刷新所有Consumer完整的Provider執(zhí)行流程大概就是這樣,流程圖如下
第一串口要打開(kāi),第二向這個(gè)打開(kāi)的串口發(fā)送數(shù)據(jù)
你完全可以在 intinputlen = MSComm1.InBufferCount 此句下一個(gè)斷點(diǎn)(將光標(biāo)移動(dòng)到此句前面 然后按F9) 當(dāng)程序運(yùn)行是 看是否停留在此句代碼 看接收事件是否工作
當(dāng)前題目:flutter斷點(diǎn),flutter埋點(diǎn)
文章轉(zhuǎn)載:http://chinadenli.net/article32/dsspipc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)建站、外貿(mào)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、網(wǎng)站導(dǎo)航、微信公眾號(hào)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)