亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實(shí)戰(zhàn)洞察。

Flutter跨端導(dǎo)航框架在OpenHarmony學(xué)生獎(jiǎng)懲系統(tǒng)中的落地實(shí)踐

Flutter跨端導(dǎo)航框架在OpenHarmony學(xué)生獎(jiǎng)懲系統(tǒng)中的落地實(shí)踐 做學(xué)生獎(jiǎng)懲管理系統(tǒng)的時(shí)候我原本只打算寫一個(gè)常規(guī)的單端 Flutter 應(yīng)用。后來設(shè)備側(cè)的規(guī)劃里出現(xiàn)了 OpenHarmony需求就變成了同一個(gè)導(dǎo)航框架要同時(shí)跑在傳統(tǒng)移動端和 OpenHarmony 設(shè)備上。項(xiàng)目里的“功能導(dǎo)航模塊”聽起來最不起眼實(shí)際卻是整個(gè)獎(jiǎng)懲系統(tǒng)最容易被低估的部分它決定用戶從哪個(gè)入口進(jìn)入加分申請、從哪個(gè)入口查看扣分明細(xì)、又從哪里回到學(xué)期匯總頁。這篇記錄一下我在這個(gè)模塊上的方案選型、跨端實(shí)現(xiàn)過程以及真機(jī)階段踩過的坑。適合正在用 Flutter 做多端項(xiàng)目、或者準(zhǔn)備把手頭應(yīng)用遷移到 OpenHarmony 的同學(xué)參考里面的代碼片段可以直接抄踩坑記錄應(yīng)該也能幫你省不少時(shí)間。1. 項(xiàng)目背景與跨端方案選型1.1 獎(jiǎng)懲管理系統(tǒng)到底要解決什么問題學(xué)生獎(jiǎng)懲管理系統(tǒng)看著像個(gè)普通的后臺管理項(xiàng)目但實(shí)際業(yè)務(wù)鏈條比想象中長老師錄入加分扣分事件德育處做審批班主任要隨時(shí)看班級排名期末還要一鍵導(dǎo)出學(xué)期匯總。這個(gè)系統(tǒng)不是給人“看看而已”的它是每天都會被反復(fù)打開的工具型應(yīng)用。業(yè)務(wù)場景大致劃分成四塊工作臺當(dāng)天待辦、班級考核排名、最新審批動態(tài)、學(xué)生檔案按班級、學(xué)號、姓名檢索學(xué)生查看個(gè)人獎(jiǎng)懲時(shí)間線、獎(jiǎng)懲記錄錄入加分項(xiàng)和扣分項(xiàng)提交審批、個(gè)人中心登錄賬號、學(xué)期切換、數(shù)據(jù)導(dǎo)出入口。這四個(gè)入口對應(yīng)的就是底部導(dǎo)航的四個(gè) Tab整個(gè)應(yīng)用的骨架都由這棵導(dǎo)航樹撐起來。導(dǎo)航模塊在這種系統(tǒng)里的特殊性在于大多數(shù)頁面都不是靜態(tài)的。工作臺要輪詢待辦數(shù)量學(xué)生檔案頁要維持篩選條件獎(jiǎng)懲記錄頁可能有正在編輯但未提交的草稿。如果切換 Tab 時(shí)把這些狀態(tài)全部清掉用戶每次回來都得重新找一遍這種體驗(yàn)在評分系統(tǒng)里會被放大成很嚴(yán)重的輿情問題。所以跨端方案首先要保證的就是狀態(tài)穩(wěn)定。1.2 為什么是 Flutter 加 OpenHarmony最早團(tuán)隊(duì)討論技術(shù)方案的時(shí)候有人提過直接用 OpenHarmony 的原生能力重寫一套界面。這個(gè)方案不是不行但我們當(dāng)時(shí)的處境是Android 等傳統(tǒng)移動端已經(jīng)有了一套成熟的 Flutter 代碼業(yè)務(wù)邏輯、接口封裝、數(shù)據(jù)模型都已經(jīng)沉淀下來了如果為了適配 OpenHarmony 再重寫一套等于同時(shí)維護(hù)兩套代碼人員成本直接翻倍。Flutter 的優(yōu)勢在于它的自繪引擎UI 渲染不依賴系統(tǒng)原生控件所以在不同平臺上渲染效果一致性極高。這一點(diǎn)對獎(jiǎng)懲系統(tǒng)很關(guān)鍵同一個(gè)配色體系、同一套圓角卡片、同一種 tab 切換動畫在傳統(tǒng)移動端和 OpenHarmony 設(shè)備上應(yīng)該看起來一模一樣而不是各自被系統(tǒng)控件“本地化”。代價(jià)當(dāng)然也有。OpenHarmony 上跑 Flutter 需要用到社區(qū)適配的 Flutter SDK原生能力調(diào)用要自己封裝平臺通道比如狀態(tài)欄高度讀取、震動反饋、消息角標(biāo)這類系統(tǒng)交互都得在側(cè)平臺注冊對應(yīng)方法。但對我們這種以 UI 和狀態(tài)管理為主的業(yè)務(wù)模塊來說跨端收益遠(yuǎn)大于額外適配成本。1.3 導(dǎo)航模塊在整個(gè)項(xiàng)目里的角色做這個(gè)項(xiàng)目之前我一直覺得導(dǎo)航模塊就是“底部幾個(gè)按鈕 路由?!睕]什么好設(shè)計(jì)的。真正動手才發(fā)現(xiàn)導(dǎo)航層決定了整個(gè)應(yīng)用的生命周期管理方式、頁面狀態(tài)恢復(fù)策略、甚至埋點(diǎn)數(shù)據(jù)的準(zhǔn)確性。舉例來說獎(jiǎng)懲詳情頁會從三個(gè)入口進(jìn)入工作臺的待辦列表、學(xué)生檔案里的學(xué)生時(shí)間線、獎(jiǎng)懲記錄里的歷史明細(xì)。三個(gè)入口傳遞的參數(shù)不一樣詳情頁的返回行為也不一樣。如果不把導(dǎo)航模塊設(shè)計(jì)成一個(gè)獨(dú)立的架構(gòu)層而是每個(gè)頁面自己處理跳轉(zhuǎn)邏輯后期每加一個(gè)入口就要改一遍所有相關(guān)頁面。我把導(dǎo)航模塊定義成“路由中樞 頁面容器 狀態(tài)管家”三個(gè)職責(zé)業(yè)務(wù)頁面只關(guān)心自己接收什么參數(shù)不關(guān)心誰跳過來的。這為跨端實(shí)現(xiàn)打下了基礎(chǔ)。2. 功能導(dǎo)航模塊的架構(gòu)設(shè)計(jì)2.1 路由框架選擇先別急著上第三方Flutter 生態(tài)里路由方案很多。go_router、auto_route、beamer 這些框架功能確實(shí)強(qiáng)大支持深鏈、重定向、動態(tài)路由過濾。但在這個(gè)項(xiàng)目里我最終還是選了 Navigator 1.0 加 onGenerateRoute 的純原生方案原因有三。第一獎(jiǎng)懲系統(tǒng)的導(dǎo)航層級很淺。底層四個(gè) Tab每個(gè) Tab 下面最多再推兩層業(yè)務(wù)頁面列表頁進(jìn)詳情頁。這種深度用 Navigator 自己的棧管理完全夠用上第三方框架反而要多維護(hù)一套路由配置。第二第三方路由框架對 OpenHarmony 的兼容性沒有經(jīng)過大規(guī)模驗(yàn)證像深鏈這種依賴系統(tǒng) intent 的能力在 OpenHarmony 上的行為未必跟傳統(tǒng)移動端一致我不想在導(dǎo)航這個(gè)基礎(chǔ)模塊上賭這個(gè)兼容性。第三項(xiàng)目里需要自定義統(tǒng)一轉(zhuǎn)場動畫Navigator 的 PageRouteBuilder 已經(jīng)能完全控制轉(zhuǎn)場過程。實(shí)際用下來這套輕量方案反而讓問題排查變得非常簡單。哪個(gè)頁面崩了直接看路由注冊表就能定位到是哪個(gè) builder 出的問題不需要經(jīng)過框架層轉(zhuǎn)發(fā)。2.2 底部導(dǎo)航的結(jié)構(gòu)設(shè)計(jì)與頁面保活四個(gè) Tab 頁之間的切換涉及一個(gè)核心問題要不要保留頁面狀態(tài)。最簡單的做法是每次切換都 push 一個(gè)新頁面但這樣工作臺的滾動位置、學(xué)生頁的篩選條件、記錄頁的編輯草稿全部會丟失。我采用了IndexedStack加懶加載的結(jié)合方案。IndexedStack的原理是所有子頁面都會被構(gòu)建但只有當(dāng)前索引對應(yīng)的頁面可見其余頁面通過 Offstage 隱藏起來。這種方式能讓每個(gè) Tab 頁的 State 一直存活切回來時(shí)頁面還在原地。但它的一個(gè)潛在問題是四個(gè) Tab 頁會在啟動時(shí)一次性全部 build如果每個(gè)頁面初始化都發(fā)接口請求啟動時(shí)并發(fā)請求會很多。為了平衡啟動性能我寫了一個(gè)LazyIndexedStack核心邏輯是首頁初始化時(shí)只 build 第一個(gè) Tab其他 Tab 直到第一次被點(diǎn)擊時(shí)才真正構(gòu)建之后進(jìn)入緩存列表不再銷毀。代碼不復(fù)雜class LazyIndexedStack extends StatefulWidget { const LazyIndexedStack({ super.key, required this.index, required this.children, }); final int index; final ListWidget children; override StateLazyIndexedStack createState() _LazyIndexedStackState(); } class _LazyIndexedStackState extends StateLazyIndexedStack { final Setint _builtIndexes {0}; override void didUpdateWidget(LazyIndexedStack oldWidget) { super.didUpdateWidget(oldWidget); if (widget.index ! oldWidget.index !_builtIndexes.contains(widget.index)) { setState(() _builtIndexes.add(widget.index)); } } override Widget build(BuildContext context) { final children ListWidget.generate(widget.children.length, (i) { return _builtIndexes.contains(i) ? widget.children[i] : const SizedBox.shrink(); }); return IndexedStack(index: widget.index, children: children); } }這個(gè)方案既保證了頁面狀態(tài)不丟又避免了一啟動就瘋狂請求接口的問題。實(shí)測下來冷啟動時(shí)間比單純使用IndexedStack降低了百分之二十左右而且后續(xù) Tab 切換也不卡頓。2.3 路由表與業(yè)務(wù)模塊解耦我把所有頁面的路由統(tǒng)一收斂到一個(gè)集中管理的路由表中業(yè)務(wù)頁面模塊只負(fù)責(zé)注冊自己的 builder不處理具體 Navigator 調(diào)用。這樣做的好處是導(dǎo)航層不依賴具體頁面類后續(xù)新增一個(gè)“消息通知”Tab只需要在路由表里加一條映射然后在底部導(dǎo)航配置里加一個(gè)入口其他頁面零改動。路由表的組織方式如下class AppRouter { static const String workbench /workbench; static const String studentList /student/list; static const String studentDetail /student/detail; static const String recordList /record/list; static const String recordDetail /record/detail; static const String profile /profile; static const String notFound /404; static final MapString, WidgetBuilder _routes { workbench: (_) const WorkbenchPage(), studentList: (_) const StudentListPage(), studentDetail: (_) const StudentDetailPage(), recordList: (_) const RecordListPage(), recordDetail: (context) { final args ModalRoute.of(context)!.settings.arguments as RecordDetailArgs; return RecordDetailPage(args: args); }, profile: (_) const ProfilePage(), notFound: (_) const NotFoundPage(), }; static Routedynamic onGenerateRoute(RouteSettings settings) { final builder _routes[settings.name]; if (builder null) { return MaterialPageRoute( settings: settings, builder: (_) const NotFoundPage(), ); } return PageRouteBuilder( settings: settings, pageBuilder: (context, animation, secondaryAnimation) builder(context), transitionDuration: const Duration(milliseconds: 220), transitionsBuilder: (context, animation, secondaryAnimation, child) { return FadeTransition( opacity: animation, child: SlideTransition( position: TweenOffset( begin: const Offset(0, 0.03), end: Offset.zero, ).animate(CurvedAnimation(parent: animation, curve: Curves.easeOut)), child: child, ), ); }, ); } }這里有一個(gè)細(xì)節(jié)詳情頁這種需要參數(shù)的路由我用ModalRoute.of(context)去拿settings.arguments比在 builder 外部強(qiáng)制轉(zhuǎn)類型要穩(wěn)妥。因?yàn)?Navigator 在創(chuàng)建路由的時(shí)候settings 是同一個(gè)對象只有在頁面真正 build 時(shí)才能確保拿到參數(shù)。統(tǒng)一轉(zhuǎn)場動畫也在這里處理兩個(gè)端都會走同樣的一段淡入加輕微上滑視覺上一致性好很多。3. 跨端實(shí)現(xiàn)的關(guān)鍵細(xì)節(jié)3.1 OpenHarmony 上跑 Flutter 的運(yùn)行環(huán)境準(zhǔn)備OpenHarmony 系統(tǒng)本身不提供 Flutter 引擎需要在編譯階段使用社區(qū)適配的 Flutter SDK。這一步是整個(gè)跨端改造環(huán)境準(zhǔn)備里最核心的部分SDK 版本不匹配后續(xù)所有編譯和真機(jī)調(diào)試都會出問題。實(shí)際操作上我把本機(jī)的 Flutter 工具鏈切換到適配 OpenHarmony 的分支然后用 IDE 工具創(chuàng)建工程模板時(shí)選擇對應(yīng)的設(shè)備類型。環(huán)境變量里需要配置 OpenHarmony SDK 的路徑構(gòu)建產(chǎn)物是 hap 包而不是傳統(tǒng)的 apk。第一次構(gòu)建的時(shí)候IDE 工具會提示需要配置簽名我在項(xiàng)目設(shè)置里開啟了自動簽名生成本地調(diào)試證書這樣真機(jī)安裝環(huán)節(jié)基本不會卡殼。這個(gè)環(huán)境配置過程大概折騰了兩天。最容易踩的坑是版本對應(yīng)關(guān)系OpenHarmony SDK 版本和 Flutter 適配分支之間存在一一對應(yīng)用錯(cuò)一個(gè)版本輕則編譯報(bào)錯(cuò)重則頁面白屏但沒有任何日志輸出。我現(xiàn)在習(xí)慣在項(xiàng)目根目錄建一個(gè)environment.md文件把本機(jī)用的 SDK 版本范圍、Flutter 分支 commit 都寫下來方便團(tuán)隊(duì)成員對齊環(huán)境。3.2 安全區(qū)域、狀態(tài)欄與系統(tǒng)字體適配Flutter 在傳統(tǒng)移動端上有一套成熟的安全區(qū)域處理機(jī)制MediaQuery.of(context).padding直接拿頂部狀態(tài)欄高度。但在 OpenHarmony 真機(jī)上我第一次跑起來的時(shí)候發(fā)現(xiàn)頂部 padding 返回的是 0頁面內(nèi)容直接頂?shù)狡聊蛔钌厦鎸?dǎo)航欄標(biāo)題和狀態(tài)欄圖標(biāo)重疊在一起。排查后發(fā)現(xiàn)是 OpenHarmony 的窗口注入時(shí)機(jī)跟傳統(tǒng)移動端不一樣Flutter 引擎拿到窗口 insets 的時(shí)機(jī)偏晚甚至在某些場景下根本沒上報(bào)。我采用的方案是在 OpenHarmony 側(cè)通過平臺通道主動讀取一次狀態(tài)欄高度緩存在全局變量里供所有頁面使用。Dart 側(cè)注冊一個(gè)方法class PlatformMetrics { static const MethodChannel _channel MethodChannel(app/navigation/metrics); static Futuredouble getStatusBarHeight() async { try { final double? value await _channel.invokeMethoddouble(statusBarHeight); return value ?? 0.0; } catch (_) { return MediaQueryData.fromView(View.of(navigatorKey.currentContext!)).padding.top; } } }OpenHarmony 側(cè)收到statusBarHeight調(diào)用后把 WindowInsets 的可視區(qū)域頂部高度返回即可。這個(gè)值拿到后我在MaterialApp.builder里通過MediaQuery.copyWith注入讓全應(yīng)用都能用到一個(gè)可靠的 padding 值。同理底部導(dǎo)航欄也用SafeArea包裹避免在帶手勢條的設(shè)備上被遮擋。字體方面也有兼容問題。OpenHarmony 的默認(rèn)中文字體跟傳統(tǒng)移動端不一定一致如果 Flutter 頁面里指定了某個(gè)具體字體族在 OpenHarmony 上沒有對應(yīng)字體時(shí)中文可能顯示成方塊。我在全局ThemeData里配置了字體回退鏈ThemeData( fontFamily: Roboto, fontFamilyFallback: const [sans-serif, Noto Sans SC, Source Han Sans CN], )這里優(yōu)先用系統(tǒng)字體回退再指定常見中文字體。實(shí)測下來OpenHarmony 設(shè)備會優(yōu)先匹配到自己系統(tǒng)里有的中文字體顯示效果不會出現(xiàn)方塊。3.3 導(dǎo)航切換動畫與觸摸反饋的一致性Flutter 在不同平臺上的默認(rèn)頁面過渡動畫不一樣Android 系統(tǒng)是縮放加淡入iOS 系統(tǒng)是側(cè)滑。OpenHarmony 上默認(rèn)行為可能又會變。為了讓兩個(gè)端觀感統(tǒng)一我像前面代碼里那樣自定義了PageRouteBuilder統(tǒng)一使用 220 毫秒的淡入加 0.03 倍高度輕微上滑效果。這個(gè)動畫時(shí)長很關(guān)鍵太短顯得生硬太長會拉低操作效率220 毫秒是我實(shí)測下來比較舒服的值。Tab 切換時(shí)的觸摸反饋也踩過坑。傳統(tǒng)移動端上調(diào)用HapticFeedback.mediumImpact()會有明顯的震動在 OpenHarmony 真機(jī)上這個(gè)方法默認(rèn)可能沒有任何效果需要自己在側(cè)平臺實(shí)現(xiàn)震動接口。后來我干脆把 Tab 點(diǎn)擊的震動反饋?zhàn)龀梢粋€(gè)可選配置默認(rèn)關(guān)閉。原因很簡單導(dǎo)航切換本身已經(jīng)有視覺反饋震動在這個(gè)場景里不是剛需與其花時(shí)間調(diào)平臺差異不如去掉這個(gè)不可控因素。底部導(dǎo)航的自定義動畫也需要注意性能。切換 Tab 時(shí)我做了兩件事圖標(biāo)位置的輕微上移和顏色漸變。圖標(biāo)位移幅度控制在 3 個(gè)邏輯像素以內(nèi)配合 150 毫秒的AnimatedSlide效果自然而且不會引發(fā)布局抖動。位移大了會顯得輕浮幅度小了沒有反饋感3 像素是反復(fù)調(diào)出來的值。3.4 頁面參數(shù)的序列化約定跨端實(shí)現(xiàn)里最容易被忽略的是頁面間傳參的方式。團(tuán)隊(duì)早期習(xí)慣直接塞MapString, dynamic在單一端上沒出過問題但到了跨端場景Map 里的類型信息在路由轉(zhuǎn)發(fā)過程中很容易丟失。比如學(xué)生詳情頁需要studentId字符串和fromSource整數(shù)如果傳參時(shí)把 fromSource 寫成字符串頁面內(nèi)部判斷就會出錯(cuò)而且這種錯(cuò)誤在編譯期完全暴露不出來。我的做法是對所有需要跨頁傳遞的數(shù)據(jù)定義強(qiáng)類型參數(shù)類。前期可能覺得多寫幾個(gè)類很繁瑣但后期維護(hù)時(shí)收益明顯編譯器能檢查類型錯(cuò)誤IDE 能自動提示字段名重構(gòu)時(shí)也不會因?yàn)楦牧俗侄蚊麑?dǎo)致運(yùn)行時(shí)崩潰。學(xué)生詳情頁的鏈路就是典型例子。工作臺入口傳WorkbenchStudentArgs學(xué)生列表入口傳StudentListArgs兩者都包含基礎(chǔ)的學(xué)生標(biāo)識但來源信息不同。詳情頁根據(jù)來源決定返回時(shí)是否要刷新上一頁數(shù)據(jù)。導(dǎo)航層不感知這些差異只需要原樣透傳參數(shù)具體解析邏輯留在頁面內(nèi)部處理。4. 實(shí)操過程把導(dǎo)航模塊落地到兩端4.1 初始化 OpenHarmony 側(cè) Flutter 工程整個(gè)實(shí)操過程踩得最多的坑集中在工程初始化和真機(jī)安裝階段。第一次創(chuàng)建工程時(shí)我沒選對設(shè)備類型模板構(gòu)建出來的包在 OpenHarmony 設(shè)備上直接無法安裝。后來重新照著官方模板走了一遍流程才跑通。我記錄的標(biāo)準(zhǔn)化流程是這樣的第一步確認(rèn)本機(jī) Flutter 版本處于適配分支執(zhí)行flutter doctor檢查環(huán)境第二步創(chuàng)建 Flutter 工程注意工程名要符合命名規(guī)范包名不能帶連字符第三步在 IDE 工具里配置 OpenHarmony SDK 路徑選擇自動簽名生成調(diào)試證書第四步構(gòu)建 hap 包并在真機(jī)上安裝。最容易被忽略的是工程里的build-profile.json5配置。這個(gè)文件里聲明了簽名證書和模塊信息如果配置有問題真機(jī)安裝會提示簽名錯(cuò)誤但日志信息并不直觀。我建議第一次跑通后馬上備份一份可用的配置文件后續(xù)重新初始化時(shí)直接復(fù)用省去重復(fù)排查的時(shí)間。4.2 自定義底部導(dǎo)航欄的實(shí)現(xiàn)思路我沒有直接用 Material 的NavigationBar組件原因是獎(jiǎng)懲系統(tǒng)的底部導(dǎo)航需要支持未讀角標(biāo)和特定的紅點(diǎn)提示NavigationBar的擴(kuò)展能力在這些細(xì)節(jié)上不夠靈活強(qiáng)行自定義反而要寫一堆樣式覆蓋代碼。自研底部導(dǎo)航欄的結(jié)構(gòu)是一個(gè)Container加SafeArea內(nèi)部用Row均分四個(gè)按鈕每個(gè)按鈕由InkWell包裹配合AnimatedContainer實(shí)現(xiàn)狀態(tài)切換。核心代碼大致是Scaffold( bottomNavigationBar: Container( decoration: BoxDecoration( color: Theme.of(context).scaffoldBackgroundColor, boxShadow: const [ BoxShadow( color: Color(0x14000000), blurRadius: 8, offset: Offset(0, -2), ), ], ), child: SafeArea( top: false, child: Row( children: [ for (final item in _navItems) Expanded( child: _NavItem( label: item.label, icon: item.icon, selected: _currentIndex item.index, onTap: () _onSwitchTab(item.index), ), ), ], ), ), ), body: LazyIndexedStack( index: _currentIndex, children: _pages, ), )_NavItem內(nèi)部處理選中態(tài)圖標(biāo)和文字顏色用AnimatedSwitcher切換圖標(biāo)位置用AnimatedSlide做 3 像素的上浮。角標(biāo)部分我在圖標(biāo)右上角疊加了一個(gè)自定義Positioned控件讀取全局待辦數(shù)量有值時(shí)顯示紅色原點(diǎn)沒有值時(shí)不渲染避免出現(xiàn)空白占位。切 Tab 的邏輯統(tǒng)一走_(dá)onSwitchTab這里會做三件事更新_currentIndex、觸發(fā)LazyIndexedStack的懶加載、告知路由觀察器當(dāng)前頁面位置。為什么要告知路由觀察器因?yàn)槿绻脩粼谀硞€(gè) Tab 內(nèi) push 了二級頁面然后按 Home 鍵退出 App再恢復(fù)進(jìn)來時(shí)我們希望路由棧能回到當(dāng)時(shí)的位置而不是App啟動時(shí)的工作臺頁面。4.3 用 IndexedStack 做頁面?;畹耐暾鞒添撁姹;畹耐暾溌肥沁@樣的用戶點(diǎn)開學(xué)生管理 Tab學(xué)生列表頁被LazyIndexedStack構(gòu)建頁面里的initState只執(zhí)行一次接口請求也只在首次進(jìn)入時(shí)觸發(fā)。之后切到獎(jiǎng)懲記錄 Tab再切回學(xué)生管理頁面 State 沒有銷毀滾動位置、篩選條件都還在。但這里有個(gè)細(xì)節(jié)要注意如果學(xué)生列表頁內(nèi)部用Navigator.push到詳情頁詳情頁返回后列表頁是正常的但如果用戶正在詳情頁時(shí)直接切底部 TabFlutter 默認(rèn)行為有可能把整個(gè)根 navigator 的頁面棧重置。我通過RouteObserver做了一層保護(hù)記錄每個(gè) Tab 頁內(nèi)的當(dāng)前子路由切 Tab 時(shí)不下發(fā)重置指令返回 Tab 時(shí)再把子路由恢復(fù)回去。實(shí)際操作里我給每個(gè) Tab 頁分配了一個(gè)GlobalKeyNavigatorState四個(gè) Tab 內(nèi)部各自維護(hù)自己的導(dǎo)航?;ハ嗖桓蓴_。外層導(dǎo)航只負(fù)責(zé)切換 Tab內(nèi)層導(dǎo)航負(fù)責(zé)各自業(yè)務(wù)流的頁面堆疊。這樣從工作臺進(jìn)獎(jiǎng)懲審批流再從審批流跳到學(xué)生詳情兩個(gè) Tab 的導(dǎo)航?;ゲ挥绊懛祷匦袨橥耆嫌脩纛A(yù)期。5. 真機(jī)調(diào)試中的典型問題與排查實(shí)錄5.1 安裝運(yùn)行階段的問題OpenHarmony 真機(jī)調(diào)試階段我遇到的最常見問題是安裝失敗。癥狀是 hap 包拷貝到設(shè)備后安裝進(jìn)度條一閃而過然后提示“安裝失敗”具體原因在設(shè)備日志里也不明顯。排查步驟是先確認(rèn)簽名證書有沒有過期再看工程包名和簽名配置里的包名是否一致最后檢查設(shè)備系統(tǒng)版本和編譯 SDK 版本范圍的匹配關(guān)系。第二次遇到的怪問題是頁面啟動后白屏沒有任何異常日志。后來發(fā)現(xiàn)是 Flutter 引擎版本和 OpenHarmony 系統(tǒng)的圖形棧不兼容需要升級 Flutter 適配分支版本。這個(gè)問題在傳統(tǒng)移動端上幾乎不會出現(xiàn)因?yàn)?Android 的圖形棧相對統(tǒng)一OpenHarmony 的自研圖形棧對 Flutter 引擎的版本要求更嚴(yán)格。升級后白屏問題徹底消失。還有一個(gè)體驗(yàn)上的坑在 OpenHarmony 真機(jī)上熱重載hot reload是不可用的。在傳統(tǒng)移動端上我習(xí)慣改完代碼馬上r一下看效果到了 OpenHarmony 上這個(gè)操作直接沒有響應(yīng)必須全量重新編譯構(gòu)建。這個(gè)差異很影響調(diào)試節(jié)奏我后來把導(dǎo)航欄樣式相關(guān)的常量全部抽到配置文件里改數(shù)值不用重新編譯業(yè)務(wù)代碼才算解決了頻繁重啟的問題。5.2 路由棧與頁面狀態(tài)異常路由棧最典型的問題是二級頁面切換 Tab 后返回行為錯(cuò)亂。場景是這樣的在工作臺點(diǎn)開一條審批記錄進(jìn)入審批詳情頁然后直接點(diǎn)擊底部導(dǎo)航切到學(xué)生管理 Tab。理想情況下再切回工作臺時(shí)應(yīng)該還停留在審批詳情頁方便用戶繼續(xù)處理。但如果不做內(nèi)層導(dǎo)航棧隔離外層 Navigator 的棧會被整個(gè)重置切回來時(shí)直接回到工作臺首頁審批詳情頁的填寫內(nèi)容全部丟失。這個(gè)問題我花了兩個(gè)晚上才想明白根因Navigator 的棧是全局的底部 Tab 切換不會自動保存某個(gè) Tab 的導(dǎo)航棧深度。內(nèi)層GlobalKeyNavigatorState的方案就是為了解決這個(gè)問題。每個(gè) Tab 頁用自己的 Navigator 管理子路由這樣 Tab 切換時(shí)內(nèi)層棧天然不會被外層 Navigator 處理。如果你的項(xiàng)目已經(jīng)開始用 go_router這個(gè)問題可以通過StatefulShellRoute的配置解決本質(zhì)上也是為每個(gè)分支維護(hù)獨(dú)立導(dǎo)航棧。但用 Navigator 1.0 配合多個(gè) NavigatorState邏輯更直接更可控。5.3 跨端差異導(dǎo)致的 UI 異常比較頭疼的一類問題是同一個(gè)布局代碼在兩個(gè)端顯示效果不同。我遇到過一個(gè)案例工作臺頁面的頂部標(biāo)題欄傳統(tǒng)移動端上高度剛好 88 邏輯像素到了 OpenHarmony 上標(biāo)題欄被拉高了 30 多像素。排查后發(fā)現(xiàn)是 OpenHarmony 系統(tǒng)對文字默認(rèn)行高和字體度量的處理不同加上中文字體 fallback 之后又引入額外的行高導(dǎo)致高度計(jì)算不一致。這個(gè)問題不能靠硬編碼高度解決不同設(shè)備、不同字體設(shè)置下高度偏差都不一樣。我在標(biāo)題欄的構(gòu)建邏輯里改成用FittedBox約束文字區(qū)域并且設(shè)置textScaleFactor上限避免系統(tǒng)字體縮放導(dǎo)致標(biāo)題溢出。同時(shí)給標(biāo)題欄設(shè)置了最小高度保證在字體差異較大的設(shè)備上也不會縮得看不見。另一個(gè)常見問題是狀態(tài)欄圖標(biāo)顏色的設(shè)置。傳統(tǒng)移動端上通過SystemChrome.setSystemUIOverlayStyle可以方便地控制狀態(tài)欄圖標(biāo)是深色還是淺色。OpenHarmony 上這個(gè)方法部分版本不生效圖標(biāo)顏色和導(dǎo)航欄背景色撞了之后狀態(tài)欄內(nèi)容幾乎看不清。我的處理是默認(rèn)情況下使用深色背景加深色圖標(biāo)不依賴系統(tǒng)狀態(tài)欄的固有樣式如果業(yè)務(wù)頁面需要沉浸式背景就在側(cè)平臺通道里額外傳入一個(gè)圖標(biāo)顏色參數(shù)。5.4 常見問題速查表現(xiàn)象可能原因排查方法解決方案hap 安裝失敗簽名證書過期或包名不一致核對工程包名與簽名配置重新生成自動簽名證書頁面啟動白屏Flutter 引擎與 OpenHarmony 圖形棧不兼容查看設(shè)備側(cè)日志升級 Flutter 適配分支版本狀態(tài)欄高度返回 0WindowInsets 上報(bào)時(shí)機(jī)異常打印 MediaQuery 數(shù)據(jù)通過平臺通道讀取真實(shí) statusBarHeight切換 Tab 后頁面狀態(tài)丟失未使用 IndexedStack 或頁面被重建檢查頁面是否被 dispose使用 LazyIndexedStack 保持狀態(tài)二級頁面跟隨 Tab 重置外層導(dǎo)航棧被重置檢查導(dǎo)航棧層級每個(gè) Tab 維護(hù)獨(dú)立 NavigatorState中文顯示方塊字體回退鏈缺失檢查系統(tǒng)字體列表配置 fontFamilyFallback熱重載不生效OpenHarmony 暫不支持當(dāng)前熱重載觀察編譯輸出改為全量編譯抽出配置常量寫在最后的幾點(diǎn)體會這個(gè)項(xiàng)目最讓我意外的事情是導(dǎo)航模塊在傳統(tǒng)移動端跑得穩(wěn)穩(wěn)當(dāng)當(dāng)?shù)搅?OpenHarmony 上各種“小問題”全冒出來了——狀態(tài)欄高度、字體回退、觸摸反饋、熱重載不可用每一樣都很瑣碎但每一樣都可能讓你卡上一整天??缍朔桨笍膩聿皇恰皩懸淮巍⑴芩小倍恰皩懸淮?、適配每個(gè)端”。我現(xiàn)在特別后悔的一件事是沒有在一開始就把平臺差異相關(guān)的代碼收斂到一個(gè)獨(dú)立的適配層里。當(dāng)時(shí)圖省事狀態(tài)欄高度直接散布在頁面各處結(jié)果 OpenHarmony 真機(jī)一跑到處是padding.top失效的黑洞。如果后面這個(gè)項(xiàng)目還要再接入新的設(shè)備形態(tài)我會把所有MediaQuery讀取、平臺通道調(diào)用、字體配置統(tǒng)一收進(jìn)一個(gè)navigation_patch.dart文件里給上層業(yè)務(wù)暴露穩(wěn)定的接口不讓任何平臺差異滲透到頁面層。最后再分享一個(gè)調(diào)試習(xí)慣跨端調(diào)試一定要盡早借到真機(jī)模擬器只能信一半。我在模擬器上驗(yàn)證了很多次導(dǎo)航動畫和狀態(tài)保存邏輯都沒有問題一到真機(jī)就暴露了簽名、圖形棧、狀態(tài)欄高度等一系列環(huán)境相關(guān)的問題。真機(jī)調(diào)試雖然麻煩但它能把那些在模擬器上隱藏得很好的問題提前暴露出來省下的時(shí)間遠(yuǎn)不止調(diào)試那點(diǎn)功夫。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
大香交| 日韩欧美tv一区二区在线观看| 综合熟女| 久久五月天婷婷丁香中文字幕| 97日韩欧美亚洲| 久久久999网站| 十八禁的黄污污免费网站| 精品999一区二区| 久久久99999久网站| 日本有码久久| 97综合久久| 老熟女乱伦一区| 亚洲精品中文字幕一区在线视频| 亚洲毛片基地专区| 欧美在线 亚洲| 五月天精品| 欧美国产精品| AV乱伦国产| 欧美成人精品一区二区男人蜜臀| 天天摸夜夜摸| 久久五月份| 色官网色综合| 中国少妇XXXX做受| 色在线亚洲视频www| 91精片| 少妇蹲下买菜露大唇0| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 免费AV中文网在线观看| 易易A毛视频| 久久久久久久久久黄色网| 好吊妞转入那个网| 久久综合中文国产| 色香综合| 亚洲中文字幕av | 老司机射| 六十路日本| 一本一道vs波多野结衣| 丰满人妻无码一区二区三区| 国产精品亚洲天堂网址| 日韩激情啪啪啪| 91av一区二区在线观看| 淫荡网址| www.91人妻.com| 日韩av在线精品观看| 中文字幕免费在线观看| 天天干人人乐| 97国产精品一区| 情色大香蕉| 欧美成人亚洲精品| 99热日| 亚码人妻| 国产丰满少妇久久久精品影院| 国产亚洲色婷婷久久99精品91| 亚洲国产一区二区日韩专区| 国产精品久久久吖| 精品免费视频国产一区| 精品免费囯产一区二区三区| 操操吧亚洲乱伦视频| 成人性爱免费播放| 亚洲成人美女无吗| 大香蕉九九| 五月婷婷久久综合| 激情综合五月天| 日本99视频| wwwss在线观看| 欧美 亚洲 偷拍自拍| 综合欧美日韩在线观看| 亚洲麻豆精品二区三区| 久久国色天香香蕉| 男女做爰猛烈动高潮A片免费应用| 欧洲精品二区| 成人av性爱电影在线观看| 欧洲亚洲人妻无码久久三区四区| 亚洲a色| 9精品久久久久| 亚洲天天更新| 久久伊人亚洲AV无码网站| 无码区蜜乳| 久久综合国产精品国产| 亚洲午夜福利视频| 精品人妻1237| 日韩精品系列| CCYY草草影院地址入口| 91黑人无码激情在线| 99无码精品| GVH-003 母子姦 青木玲-麻豆视频,麻豆视传媒短视频网站入口,麻豆视传媒官网直 | 男女真人网18| 99色| 国产1727欧美| 风月影院十八禁| 国产日韩区| 欧美顶级黄片AAAAA在线免费看| 亚洲激情av| 亚洲综合性感在线| 少妇淫妇久久久久久久| 7777奇米影视久久| 97久久精品亚洲中六字幕| 97国产色图| 伊人欧美大香蕉视频| 久久性爱视频99| 天天插天天舔舔天天干| 日产成人久久| av毛片aaaaa免费看| 色婷婷九月| 熟女欧美日韩综合婷婷| 色亚洲欧美| 亚川综合视频| 91色艳| 欧美天堂亚洲电影院一区在线播放| 97资源站国产精品| 亚洲色图日韩精品| 国产麻豆一区二三区| 一起草在线视频| 乱伦av麻豆| 亚州少妇| 变态综合色| 一区操逼日比视频| 欧美在线综合| 377p欧洲日本亚洲大胆| 大干人妻| 激情综合二| 极品五月天噜噜| 无码人妻丰满熟妇区毛片| 视频一区二区免费在线| 玖玖97综合| 大香蕉日亚洲日本亚大 | 国产一区二区二区按摩精品啪视频| 久久久久久国产成人| 伊人黄色视频免费观看| 午夜啊啊啊| 极品销魂美女一区二区 | 九九九影院| 老外又粗又长一晚做五次| 天天狠| 理论久久婷婷网8| 三级特黄60分钟播放| 手机不卡视频不卡在线一二三区| 亚洲色狠| 中文有码第五页| 欧美性爱免费短视频| 99久久com免费视频′| 亚洲在线A| 中文字幕精品日韩中文字幕| 91高潮喷水美女| 欧美十八禁视频| 九热中文字幕| 中文字暮97| 亚洲97在线观看| 天天肏美女| 青青草国产欧美非洲黑人| 大香蕉伊人色偷偷在线| 清纯唯美亚洲综合| 九九英色视频| 国产精品久久久久亚洲av| 大香蕉综合在线| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 精品一区二区三区国产| 啊啊啊操一区| 自拍内地三级在线观看| 精品九九淫乱男| 亚洲天堂AV在线播放| 超碰这里只有精品| 日日夜夜天天| 日韩人妻播放| 91蜜臀人妻中文字幕在线| 国产伦精品一区二区三区在线观| 97操b| 日韩美脚一区二区网站| 天天摸夜夜添无码小视频| 日韩八十路老熟女| 99热这里只有精品9| 欧美gv在线观看| 樱花草社区www中国| 亚洲成?V人片在线观看福利| 91肉丝| 午夜欧美神马久久久久| 日韩激情啪啪啪| 天美传媒婬乱在| 男人天堂综合| 98一区二区精品| 99老司机精品视频在线观看| 欧美日韩亚洲少妇寂寞影院正在播放| 美腿色图| 丁香九月激情啪| 丁香五月影院| 免费日韩黄片| 玖玖爱影院| 亚洲凸凹超碰成人| 91人妻丝袜无码| 天天做日日做天天欢。| 国产日韩无码一区二区三区久久区| 高清肉丝中文无码| 欧美中文字幕男人天堂久久精品| 国产第25页在线观看| 97 色综合| 色超碰综合| 欧美图片偷拍| 欧洲熟妇xxXx欧美老妇裸体| A一区片| 麻豆尤物视频网| 国产精品久久久久久久久久久久久久久久久久| A V少妇特黄三级| 一区操逼日比视频| 色伊人91| av一区二区三区四区| 91精片| 亚洲天堂美臀在线| 色麻豆AV| 东北操逼| 久久九精品| 熟女一区二区| 少妇一区二区三区在线观看| 蜜臀久久99精品久久综合| 中国国国产一级特黄毛片| 97在线免费视频| 农村少妇久久久久久久| 少好三P| 日本精品久久久久久久| 熟女高潮合集-永久久久-成人AV| 亚州综合AⅤ| 神马精品视频| 女人的久久久| 激情文学网伊人| 九九无码视频| 激情AV| 日本中文字幕在线视频| 在线 欧美 亚洲| 蜜桃久久久久久久久久久久| 妇人噜噜| 国产久久日| 国产精品网站www| 麻豆人妻少妇在线免费观看| 青青国产在线拍揄自揄拍| 亚洲91色在线| 清清一区二区三区四区不卡视频| 天美精品一区二区三区四区在线观看| 欧美日韩亚洲天堂网| 人人澡综合涩| 夜夜操夜夜高潮夜夜爽国产精品区| 九九热精彩视频| 操逼999| 色噜噜日韩精品| 日韩91网| 超碰97人妻免费在线| 黄色片A级一区二区三区| 日本性爱视频一级| 国产69精品久久久久99尤物| 天天日夜夜| 天天干天天干天天干| 久久久久久久久久久久久久久性生活视频 | 久久曰曰| 乱操9999| 精品久久久久久中文字幕视频免费| 精品无吗m| 日韩视频中文字幕| 亚洲暴力强奸AV| www.婷婷| 天天舔九色婷婷| 92大香蕉| 中文字幕AV乱伦| 久久香蕉综合一本到3atv| 久久久九九网站| 欧美日韩国产中文精品字幕自在自线, | 青青草视频久久久久| 三级精品三级在线观看| 国产亚州精品美女久久久免费| 欧美v亚洲v日韩v最新在线二区| 日韩av乱伦| 96AV久久久| 免费99精品国产自在在线| 97超碰色情| 免费少妇一区二区| 亚洲 欧美 中文 日韩超碰 | 中文字幕av亚洲精品| caoni国产亚洲av| 五月综合视频| 后入式999| 国产极品粉嫩馒头一线天av| 日日爽夜夜爽| 狠狠躁日日躁夜夜躁A| 91亚洲人| 欧美丰满熟妇XXXX性ppX人交| 久久9精品视频| 亚洲AV不卡在线观看| 人人弄人人摸| 99热超碰| 欧美劲爆第一页| 综合免费无码中文| 2025亚洲男人天堂| 91综合熟女| 国产69精品久久久久99尤物| 国产极品久久久| 999精品久久久久久久| 亚洲偷拍自拍在线视频| 人妻人人澡人人爽人人| 国产高清自拍视频| 性爱动态120秒| 久久9精品网站| 久久肏大逼| 玖玖草久草99蜜月一区二区三区| 亚洲春色欧美激情自拍| 德国一二三不卡| 手机看片1025| 欧美日韩亚洲电影| 色色毛片| 搡老女人老妇女老妇老熟女怎么读| 婷婷探花久久精品一区| 激情五月天丁香社区| 77国产精品| 91香蕉视频在线观看免费| 精品久久久久,69国产成人精| 美女上床网站| 五月天丁香网| 欧美色另类| 久久伊人五月天| 欧美同性恋 的搜索结果 - 91n| 久久精品国产亚洲AV嘿嘿| 日韩精品99久久久久久中文字幕| 日本东京热加勒比久久| 91欧美少妇| 3P乱轮视频| 综合网97| 五月丁香啪啪| 十八禁啪啪视频| 欧美色图私拍91| 三级AV入口| 精品无码人妻一区二区免费蜜桃| 97国产高清视频在线观看| 免费男人的天堂| 久久久久久久人妻| 影音先锋每日最新资源在线观看| 国产精品 午夜福利| 青青操网| 欧亚揄拍偷拍精品视频| 69人妻精品一区二区绯色| 久久久96| 超碰97首页| 91干熟女| 97精品一区二区视频| 日韩一级二级在线| 成人午夜小视频手机在线看| 加勒比色综合| 欧美高清性猛交| 天堂а√在线最新版在线| 中文熟女五十乱码在线| 精品国产污一区二区三区| 尤物黄色在线观看网站| 亚洲操操操无码| 国产精品麻豆成人AV艾秋| 色激情综合网站| 色综九九九一区| 久久人人妻| 国产成人午夜视频网址| 青草精品视频日本久久久久网站在线| 亚洲天堂另类小说男人| 激情四射五月天| 亚欧无码线免费观看视频| 强奸熟女一区二区三区| 极品色社| 99国产在线绯色一区| 91麻豆va国产精品| 加勒比东京热五月天天堂网| 欧美性爱在线无码| 好吊色在线观看| 色五月av| 天天草AV| 欧亚久久偷拍视频| 可以免费观看的av| 99精品久久久久久久婷婷蜜桃| 欧美91变态| 自拍亚洲综合| 欧美日韩国产男人| 97内射偷拍| 天天综合网站| 性吧在线视频| 久久久一热在线播放| 操逼无码一区| 免费A V在线| 亚洲欧美精品福利在线| 偷窥自拍A片| 午夜久久无码1000合集| 手机在线A片| 凹凸久久人人| 婷婷激情四射| 亚洲天堂,男人| 热久久91婷婷| 啊啊啊啊啊啊啊啊要喷了| 一区 欧美 日韩 麻豆| 内射中出日韩在线观看视频| 久久亚码| 久久精品熟妇丰满人妻99| 91搡老女人老妇女老熟女歌词翻译| 欧亚日韩中文在线| 乱伦a片视频| 色妇综合网| 宅男午夜在线视频| 九九久精品| 欧美αv.com| 久久久蜜桃一区二区三区| 久久同城AV| 中字幕人妻一区二区三区| 九热视频| 欧美色图亚洲色,麻豆| 国产午夜无码片在线观看影视| 精品夜夜澡人妻无码| 伊人欧美大香蕉视频| 国产精品久久久久久无码红治院| 天天干天天干天天干| 91痴汉| 无码av永久免费专区网站| 亚洲色91C| 免费精品中文字幕| 欧美第二页午夜| 日韩一区二区三区四区五区| 大香蕉宅男伊人| 69XX一中文字幕人妻91| 日韩9999| 亚洲日韩精品在线播放| 欧美日综合| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 超碰人妻中文在线| 免费精品人妻一区二区三| 久久色AV线| 亚洲啪啪性视频| 欧洲综合色图| 亚洲天堂第一页| 欧美专区日本专区| 欧美中文综合| 91久久久久久久| 性色av婷婷久久一区二区点复制| 亚洲色图欧美色图另类图片| 日韩色| 欲色影视综合吧| 亚洲 欧美 天天| 欧美天堂第二区| 人人贴人人摸| 超碰1997| 视频分类 国内精品| 人人爽人人精品乱人伦AV| 日本三级一区二区 在线| 偷拍网站久久男女男| 国产最火爆久久国产网站网站 | 免费观看性欧美一级| 超碰超碰95| 永久免费观看的毛片的网站| 人妻久久久久久久久久久久久久久| 天天操狠狠日夜夜干超大胆开放com大香蕉视频在线观看 | 午夜精品久久久久久久久久蜜桃| 久久男人网| 精品人妻av在线播放| 国产91丝袜在线播放蜜月| 色综合网1| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 超碰在线国产| 无码精品久久久久久亚洲| 国产av青草| www成人啪啪18秘 免费| 国产精品免费久久久久久久久久| 久久超碰亚洲人| 强奸乱伦 亚洲一区| 欧美精品久久| 四虎影视在线| 日韩性爱播放| 日韩精品人妻| 后入合集| 人乳av| 人人澡人人爽人人精品| 睡产熟女乱伦| 激情五月综合开心五月| av网站在线看| 午夜操逼不卡| 天堂性色| 性高潮久久久久久久久久久| 天堂资源欧美| 厕所偷拍在线| 九九精品美女高溯喷水| 欧美极品女人的天堂| 欧美亚洲色图另类国产| 午夜乱轮操逼视频免费看| 26uuu久久| 精品少妇999| 丰满人妻一区二区三区| 人妻丝袜美腿中文字幕| 久久婷婷苹果| 高清无码人妻久久久一区二区三区aⅴ| 色哟哟av网址| 久久国产视频专区一二三| 国产欧美伊人| 精品无码久久久久| 色欧洲| 99re在线| 无码高清国产AV| 99热在线播放| 日本999精品| 大香蕉色欲AV| 日韩人妻无码不卡网站| 春色91| 成人 日本A片无码8888| 亚洲一级特黄大片在线播放91| 成 人片 黄色大片| 国产情侣自拍在线播放| 亚洲欧美国产日本一区二区三区| 丁香六月婷婷综合| 五月天综合网| 少妇天堂| 99国产精品| 国产精品ww久久| AV不卡在线| 九九九久千久久激情蜜桃在线看 | 97伊人网| 婷婷亚洲天堂| 岛国不卡超碰护士AV在线播放| 久热最新在线杭州| 激情小说图片亚洲首页| 人人看欧美性爱| 伊人网综合在线视频| 色综合五月天| 99re28在线观看| 国产在线观看一区二区三区| 亚洲αv一区二区三区| 亚洲影视综合网| 男人天堂2012| 操久久久久| 亚洲成人av电影在线| 免费强奸av| 久日91在线| 亚洲黄色| 中文字幕五区| 久久97视频| 日韩啪啪啪啪啪| 2020天天色综合| 精品成人av一区二区三区在线| 欧美日韩婷婷中文| 一级久久性爱视频| 久久久精品,3| 国产女人高潮视频| www.av在线视频| 国产欧美后入| 人妻少妇精品一区二区三区| 久久亚洲AV无码白度| 午夜精品99久久久久传媒| 9精品久久久久| 婷婷色香| 99综合视频| 国产免费黄色一级大片| 国产视频第2页| 色五月婷婷麻豆在| 久久久亚洲高清不打码| a男人的天堂| 超碰午夜| 久久久国产精品亚洲精品| 99热婷婷| 在线无码操| 性91| 欧美青青草视频| 人人超碰在线观看黄| 亚洲 欧美 精品专区 极品| 天天肏美女| 91呆哥人妻| 激情接吻视频久久久久久| 乱伦a片视频| 97超碰国产亚洲精品| 超碰在线人妻| 国内偷自视频区视频综合| 欧美极品少妇| 黄色成品网站| 99久久9| 最新中文字幕在线亚洲| 大屁股人妻女教师撅着屁股| 欧美日韩国产电影| 久久婷婷伊人| 强免费黄色网址| 国产又黄又爽| 人妻干天天| 日韩有码 一区二区三区| 欧美综色欧| 天美传媒精品久久视频| 日本人妻中文字幕| 日韩性爱小视频| 国产400孕妇孕交群| 综合网少妇| 男人的天堂kva| 九九九久久久久| 久久綜合很很很| 久久久久久久久久久999| 国产婷婷一区| 中出后入| 91高清欧美| 性一级黄色录像片网站导航 | 亚洲综合有码| 电家庭影院午夜69久久夜色精品国产69乱 | 日本黄色精品专区网站| 激情啪啪拍91| 人人扣人人操| 久久大香蕉手机高清视频| 校园春色制服丝袜中文字亚洲| 69精品人人人人| 67914在线精品观看| 色欲人妻一区二区在线| 另类图片五月天| 日韩欧美日韩| 国产真实野战在线视频| 久久蜜色情在线视频xxx免费观看| 久久99草| 蜜臀久久99精品久久久久久-DVD| 青青草中文字幕| 无码最新| 欧美中文字幕男人天堂久久精品| 黄网站黄视频网站进入口| 九九九只有精品| 欧美A片中文字幕| 亚洲AV永久无码一区仙野| 97超碰jingpin| 91美女视频直播| 天天日天天搞天天干| 五月天激情小说网| 亚91亚洲网| 在线观看午夜婷婷久久久久清性观看| 丰满人妻一区二区中文| 天天欧美| 国产又粗又大硬免费色网视频| 无遮挡猛进视频免费无限观看| 色性综合| 亚洲天堂男人网| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 26UUU欧美日本| 99精品免费| 欧美同性恋 的搜索结果 - 91n| 成人97人人超碰人人| 99久久久久久久久| 亚洲 欧美 另类 日韩 人妻一区| 亚欧美色| 色区久久| 3PAV乱伦视频| 蜜臀AV成人精品蜜臀| 日韩欧美午夜一区二区| 欧美一区二区情色| 国产极品粉嫩馒头一线天av| 操学生天天| 国产AV久久野战精品| 国产伊人精品在线| 午夜情侣自拍网站| 欧美精品99久久久**| 三级网站超变态精品| 久久性生大片免费观看性| 夜夜操av亚洲一区二区| www.99中文字幕| 久久久91福利姬| 日韩97视频!在线| 国产亚洲精品农村妇女| 久久久久久久久女黄| 激情视屏国产乱伦强奸| 国产精彩女在线观看视频| 欧美做爰无码A片视频| 久久精品一区二区| 色偷偷人人玩人人舔人人操人人摸人人爽| 国产精品视频白浆免费| 91熟女视频网| 色婷婷影院| 亚洲一区二区中文字幕| 国产熟码AV| 91在线视频免费中出| 黄色电影观看久久9| 欧美性夜| 美女好片色日本| 亚洲AV不卡在线观看| 97爱啪| 亚洲一二三精品久久网| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 午夜福利无毒不卡| 久久一本大香蕉| 91新在线欧美| 91 国产丝袜在线放观看| 欧洲天天在线| 大香蕉色十月| 久久久com| 欧日韩不卡视.频| 亚洲情色91| 欧美78p| 91九九九馒头| 九色 人妻 大香蕉| 超碰97起碰| 1024亚洲中文字幕久在线看片你懂的 | 美女自卫慰黄网站免费| 在线观看精品国产免费| 色噜噜人妻丝袜a∨先锋影| 1769一区二区| 精品四五区| 欧美亚州色的图| 国产后入清纯| 加勒比av网| 精国久久一区二区三区98| 91操碰| 777奇米影视777四色| 天天看人人操屄犊摸阴| 久久久久精| 久久久久久性爱片| 麻豆精品久久久久久久| 激情终合网| 亚洲色图国产另类| 久久亚洲一区女同性恋中文字幕| 日韩欧美亚洲自拍偷拍| wwwxxx日本爽| 小视频国产| 无码自拍SM| 91/欧美| 欧州一区二区三区四区| 一区二区视频在线播放| 鲁鲁色综合网| 色哟哟av| 中国探花熟女| 欧美亚洲20p| 日韩不卡网操逼中文字幕日韩| 操死我了啊啊啊| 1000部熟女视频在线观看| 激激五月| 欧美精品久久96人妻无码| 激情五月婷婷| 加勒比av网| 中文字幕精品免费一区二区| 日本三级久| 欧美亚洲今日在线| 国产av又色又爽又黄| 麻豆黄四叶草网站| 五月天亚洲色图| 综合五月天| 91精品导航| 91欧美长吊| 97天堂| av操操不卡| 人人九九精| 免费啪啪啪网站18岁| 美国久久一二三四| 日韩探花精品在线视频| 欧美一二级| 我要去看2个日本美女.com曹逼| 91无人区卡一卡二卡三乱码入口最新版:能让用户有更多选择的选择-经典说说-爱 | 永久免费发布性爱网| 97超碰中文字幕| julia高潮后不停追击中出| 欧美亚洲中文| 97网址97| 久久婷婷国产一区二区色| 韩日色费| 好爽视频在线观看视频 | 91精品久久久久五月天精品| 性爱AV天堂| 九九热九九热| 日本性爱少妇| 伊人精品久久网站| 欧美高清第一页| 久久视频,这里只有精品| 深夜操逼网| 日韩乱伦视频| 亚洲成人无码影院| 无码高清操逼网址| 日本精品一级二级三级| 97这里有精品| 91高清欧美| 天天插天天操天天摸天天射天天看| 综合网~91综合网| 99久久9| 黄色片大香蕉| 久久婷婷五月天| 日本福利二区视频| 成人性爱高清视频免费看| 福利视频一区二区微拍| 欧美一区二区日韩三区| AAAA欧美日韩| 伊人激情五月天一区二区| 亚洲中文字幕久久人妻| 97资源视频| 中文字幕乱在线伦视频中文字幕乱码在线 | 国产福利小视频高清在线观看| 无码高清操逼网址| 在线a v| 亚洲AV无码国产精品久久久久| 老司机射| 97香焦色区| 久久综合精品一区二区三区| 欧美黄色图片| 亚洲图片 激情小说| 青青草日本无码| 亚洲欧美另类少妇精品| 久久久九九九九| 天天操天天日天天干| 一本一道久久综合久久| 高清孕妇孕交| 日韩A优精品在线观看| 91成人久久 | 中文字幕日韩精品一区二区三区| 黄色片G G G| 欧美丝袜中文字幕07在线| 国产9区| 日韩国产精品人妻无码久久久| 欧美激情另类一区二区| 大香蕉久| 欧美综合 站| 国产无码精品成人| 欧美视频在线第3页| 亚洲精品人伦一区二区| 久久性生大片免费观看性| 男女性感激情网站| 国产欧美第五页| 亚洲国产亚洲天堂| 天天综合网~91| av无码av无码专区| www.操| 香蕉国产97| 日本操逼aaaaa| 亚洲第一页色| 人人澡人人干| 欧美专区日本专区| 91欧美偷拍| 99无码狠狠久久| 口爆综合网| 亚洲视频精选| 91大胆欧美| 天天看天天日天天操| 国模限制级电影| 亚洲人妻中文在线视频| 日韩精品人妻中文字幕久久久| 精品日韩人妻精品一二三区| 午夜天堂精品久久| 成人小说视频在线精品欧美| 色婷婷婷五月天激情四射| 999久久久免费精品国产牛牛| av天堂影视中文在字幕在线中文 | 天天操夜夜操狠很操| 久久久久一本一区二区青青蜜月| 岛国片在线视频网站| 日本不卡二三区| 日本高清_区二区三区| 精品一区二区2| 久久女人视频| 十八禁的黄污污免费网站| 偷拍欧美亚洲| www.高清无码诱惑一区.com | 一区二区三区机械有限公司| 黄页网站成人免费| 精精夜夜| 一区二区三区黄片免费观看| 夜夜国自区| 亚洲。日韩。欧美| 中国国国产一级特黄毛片| 亚洲欧洲激情卡通另类文学四射小说网站 | 人妻 欧美亚洲| 好爽,再快点啊哈嗯嗯嗯嗯| 日韩AV无码中文一区二区| 九九综合九九综合| 亚洲九九视频| 免费亚洲国产精品久久一区| 欧美日韩夜夜| 神马精品视频| 久久九九99| 韩国三级理论在线| 一二三四视频中文字幕在线看| 亚欧美色图| 最新中文字幕av| 91人妻人人妻| 91亚·色| 热久久这里只有精品| 在线中文字幕极品av| 久久无码一区二区二三区性色| 老熟女综合网| 青青久草| 精品人妻一区二区三区视频在线| 日韩精品影视| 欧美另类天堂| 999久久芭蕾| 日本不卡中文| 欧美精品三区| 色情婷婷久久五月天| 久久精品人体| 干妹子| 东方亚洲在线操逼天堂| 91东北熟女| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区 | 韩国手机不卡无码三级视频| 天天视频网站黄| 在线观看AV片| 欧美少妇熟女| 亚洲熟女一区| 精品一区二区三区蜜桃| 大JI巴好深好爽又大又粗视频| 91在线精品一区二区三区| 亚州一区二区成人片免费| 人妻少妇av在线观看| 国产怡红院| 久久偷偷色综合蜜桃| 亚洲中文字幕av| 婷婷av在线中文字幕| hd成人一区二区在线| 97香焦色区| 亚洲黄色网址| 亚洲婷婷综合网| 久久99精品视频| 日本高清加勒比| 97操| 超碰av在线| 免费网色网站| 东北毛片| 新婚人妻扶着粗大强行坐下| 青青草原综合久久大伊人精品| 无码男人天堂| 中文字幕第9页萱萱影音先锋| 亚洲强奸乱伦影视网| 91中文精品日韩欧美在线| 亚洲综合在线91| 国产无马视频| 爱妻综合网| 日韩欧美中文日韩欧美色| 国产剧情一区在线观看| 天天狠操| 一区二区三区四区姦女| 日韩兔费看黄片| 午夜天天碰综合视频| 亚洲欧美人妻| 黑丝日韩av丝袜av| 岛国黄| 久久原创中文| ?亚洲伊人伊成久久人综合网| 天美传媒在线一区| 午夜一区二区三区国产| 国产青视频| 人人贴人人摸| 国产精品久久久久久久久久久久久久久| 一区二区三区国产在线播放| 日韩亚洲美女一区久久| 国产精品诱惑| 亚洲精品天天影视综合网| 性色av大全| 亚洲狠狠入| 亚洲欧美天堂在线| 最近2019中文字幕国语免费版| 久久老熟女| 91av天美性媒精品视频| 久久久久久久亚洲Av无码| 四虎精品亚洲| 亚洲成人精品久久久| 粉嫩av在线一区二区| 精品国产乱码久久久久久网站入口| 色呦呦、国产精品| 久久婷婷综合国际产色怕| 一区二区三区国产在线播放| 99在线精品观看视频中文| 丝袜熟女2P| 思思热免费视频观看| 日韩中文字幕国产| 91欧美www| 校园春色家庭伦理欧美激情| 一区三区啪啪| 精品偷拍13p欧美dodk视频| 91肉片| 国内伊人久久久久久网站视频| 欧美A√综合网| 青青草视频在线观看一区二区| 激情四射五月天| 亚洲色 国产 欧美 日韩| 国产一区二区三区免费视频在性观看| 美女十八禁| 久久精品99| 是还免费视频1727我| 伊人国产av| 亚洲AO在线| 制服少妇欧美| 亚洲污一污二| 骚女高跟AV在线| 成人精品视频| 内射卯月麻衣| 97超色| 亚洲成人在线资源| 极品少妇久久久| 97操| 天堂俺去俺来也www久久婷婷| AV乱伦专区| 欧美激情性久久久久久| 正在播放国产精品一区| 亚洲春色欧美激情自拍| AV污污污污| 日韩偷拍色图| 国产盗摄美女如厕大神作品在线观看| 岛国片国产成人亚洲播放| 日韩色图 一区二区| 天天躁夜夜躁狠狠躁AV| 99re国产精品视频| 免费A V在线| 最新的亚洲无吗| 六月丁香啪啪| 九九九久久久久| 欧美美逼| 亚洲一区日韩精品| 亚洲精品影视老司机| 人妻少妇久久久| 欧美少妇高潮久久91| 日夜精品| 操逼日批| 日韩一区二区精品视频| 欧美色图人妻| 欧美色图电影| 日韩av在线免费网站| 久久久蜜桃一区二区三区| 秋霞福利网| 四虎在线观看视频| 日本色色的视频| 欧美日韩免费专区在线| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 久久一区二区高清免费| 水野优香在线观看| 骚人妻少妇视频| 天天肏天天干| 亚洲各类熟们中文字幕| 婷婷美人网| 日本色日夜干| 中文字幕jul-617人妻熟女| 麻豆久久久久久久久丝袜| 国产精品一区二区三区在线| 久久久新亚洲AV| 婷婷五月av| 夜夜夜夜爽| 欧美爆乳精品一区二区| 人妻天天夜夜爽一区二区| 一区二区亚州激情久婷婷欧美| 欧美精品精品一区二区| 午夜天堂精品久久久久91| 大屁股熟女一区二区三区| 手机看片日韩人妻| 精品国产少妇高潮视频| 精品免费囯产一区二区三区| 久久久久久久亚洲Av无码| 日韩三级在线观看mp4| 青春草莓视频在线观看网址| 欧美在线播放aaaa| 激情图片亚洲色图| 91性片| 日本三级韩三级99久久| 中文字幕第二页| 亚洲AV无线| 97爱碰| 无色无码| 91路www| 国产福利小视频高清在线观看| 欧亚久久偷拍视频| 国内毛片无遮挡国产| 91伊人大香蕉| 99婷婷一区二区| 妇女视频网站| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 国产成人www免费人成看片| 超碰97欧美日韩| 日韩欧美tv一区二区在线观看| 久久日本熟女精品一区| 天天草夜夜草高潮片| 九九热五区| 在线看的av| 欧美日韩亚洲高清不卡一区二区三区| a片久久久久久久久久久久 | 国产传媒日本欧美专区| 欧美一二三级精品在线| 91人妻丝袜无码| 久久久久久亚洲Av无码精| 神马久久久久久久久久久久| 激情小说图片亚洲首页| 久久久久78| 欧美亚洲| 青青草色AV| 欧美制服另类丝袜| 亚洲精品久久久久毛片A片拉屎| 女同亚洲欧美一二三区久久电影| 9 1超碰九色| 思思热国产在线视频| 天天天堂影视日韩亚洲91| 九月婷婷久久| 探花视频免费观看国产专区| 欧美激情欧美精品| 色综合av男人天堂| 中出91视频| 91丝袜美腿网站| 国语国产操逼伊人AV网| 97人妻人人躁人人玩人人| 大奶啊啊好爽| 99re98| 好屌色综合| 99热这里只有精品8| 新亚洲无码| 久久人妻一区二区三区高清| 欧美极品少妇交| 人妻偷拍一区二区三区| 夜夜国自区| 精品久久青青草| 在线综合色| 欧美色图亚洲色| 国产67194| 91色久| 狠狠色噜噜狠狠狠狠2018| 9ⅰ久久久天天| 91大学精品激情戏| se吧提供国产乱老熟视频胖女人 | 97精| 综合97久久| 猛交交| 免费的黄片wwwwww| 亚洲黄片免费在线播放| 超碰到97情色| 日韩99神马视频播放| 国产成人bd在线观看| 熟女探花啪啪| 91N综合网| 超碰99热中文字幕| 五月婷婷丁香| 特级丰满少妇一级AAAA爱毛片| 一区二区不卡视| 97超碰欧美手机在线| 九九AV| aaaa少妇高潮大片| 影音先锋少妇| 97亚洲在线| 中文字幕国产| 偷拍综合亚洲| 国模限制级电影| 操人91| 国产一区二区视频在线播放| 超碰97人妻在线| 久久精品无码专区| 91九色丰满高潮| 国产欧美日韩臀| 啊好大好舒服| 午夜精品探花| 天天射天天| 亚洲精品久久久久毛片A片拉屎| 久热伊人| 中文日韩欧美熟| 国产精品亚洲日韩骚欢乐谷最新地址发布页huanieguty性屋娱乐妖精视频 | 特色a在线上| 视频二区美腿制服人妻欧美| 另类成人首页一区| 热久日综合| 诱惑人妻欧美一区在线播放| 国产无遮挡| 丁香五月综合| 婷婷导航| 亚洲91在线播放影院| 樱花蜜乳av| 欧美探花网| 成年人网站在线免费观看| 久久男人的天堂| 玖草在线视频| 欧美成人精品一区| 欧美亚洲今日在线| 欧美 亚洲精品首页| 99视频自拍区| 久久久涩| 中文字幕成人乱码熟女精品国50 | 人人妻人人澡人人爽人人精品浪潮 | 97超碰欧美中文字幕| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 无码人妻系列少妇| 中文一区在线日| 久久 久久国内精品亚洲 | 一本大道不卡一二三区|