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

ARTICLE DETAIL

資訊詳情

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

Flutter適配OpenHarmony:二手App設(shè)置頁(yè)開發(fā)與平臺(tái)通道實(shí)踐

Flutter適配OpenHarmony:二手App設(shè)置頁(yè)開發(fā)與平臺(tái)通道實(shí)踐 如果你問我一個(gè)二手物品置換App里最不起眼但最容易翻車的模塊是哪個(gè)我的答案一定是設(shè)置頁(yè)。剛接手這個(gè)項(xiàng)目時(shí)我也覺得這個(gè)模塊簡(jiǎn)單得很幾個(gè)列表項(xiàng)、幾個(gè)開關(guān)、跳轉(zhuǎn)幾個(gè)二級(jí)頁(yè)面半天就能搞定??烧娴接肍lutter適配OpenHarmony設(shè)備跑起來才發(fā)現(xiàn)事情沒那么簡(jiǎn)單——文件路徑取不到、版本號(hào)讀不出來、消息開關(guān)不同步一個(gè)比一個(gè)磨人。這篇文章就把我們用Flutter在OpenHarmony上落地二手置換App設(shè)置功能的全過程拆開講一遍從需求拆解到UI封裝從平臺(tái)通道適配到真機(jī)踩坑給正在折騰同一條路的你省點(diǎn)時(shí)間。1. 項(xiàng)目背景與需求拆解設(shè)置頁(yè)比想象中更重要1.1 為什么這個(gè)項(xiàng)目會(huì)用Flutter來做OpenHarmony應(yīng)用先說背景。這個(gè)二手物品置換App的核心業(yè)務(wù)是讓用戶發(fā)布閑置物品、按分類搜索、發(fā)起交換或低價(jià)交易同時(shí)支持同城線下見面驗(yàn)貨。最初只做了Android端后來業(yè)務(wù)方要求覆蓋更多設(shè)備形態(tài)包括平板和不少基于OpenHarmony的國(guó)產(chǎn)終端。團(tuán)隊(duì)評(píng)估后決定引入Flutter統(tǒng)一UI層。原因是這樣的業(yè)務(wù)頁(yè)面——首頁(yè)信息流、物品詳情、IM聊天、訂單流程——加起來有三十多個(gè)頁(yè)面如果每個(gè)平臺(tái)各寫一套人力完全撐不住。Flutter的優(yōu)勢(shì)在于渲染引擎自繪UI表現(xiàn)跨平臺(tái)高度一致而且Dart語(yǔ)言做狀態(tài)管理、網(wǎng)絡(luò)請(qǐng)求、本地化都非常順手。至于平臺(tái)差異能力比如消息通知、WebView容器、文件目錄等統(tǒng)一走M(jìn)ethodChannel也就是平臺(tái)通道。設(shè)置模塊恰好是最具代表性的“跨端試金石”。它既有純UI的東西又有大量涉及系統(tǒng)能力的調(diào)用。把設(shè)置頁(yè)跑通基本就能摸清這個(gè)App在OpenHarmony上還有哪些隱藏問題。1.2 設(shè)置模塊的需求清單在動(dòng)手寫代碼之前我們先把需求拆成了下面這張表。這里的關(guān)鍵不是把功能列全而是搞清楚每一條到底屬于UI展示、本地狀態(tài)、還是系統(tǒng)能力。功能模塊具體項(xiàng)涉及能力實(shí)現(xiàn)方式賬號(hào)管理個(gè)人信息展示、修改昵稱、修改手機(jī)號(hào)用戶數(shù)據(jù)Flutter 業(yè)務(wù)接口安全設(shè)置退出登錄登錄態(tài)清理Flutter 本地存儲(chǔ)消息通知交易消息開關(guān)、社區(qū)消息開關(guān)、促銷消息開關(guān)系統(tǒng)通知權(quán)限、本地開關(guān)狀態(tài)Flutter MethodChannel通用設(shè)置清除緩存、檢查更新、主題模式文件目錄、應(yīng)用市場(chǎng)Flutter path_provider關(guān)于版本號(hào)、用戶協(xié)議、隱私政策、開源許可應(yīng)用信息、WebViewFlutter MethodChannel幫助反饋意見反饋、常見問題頁(yè)面跳轉(zhuǎn)Flutter拆完這個(gè)表你會(huì)發(fā)現(xiàn)設(shè)置頁(yè)的價(jià)值不只是提供一個(gè)入口列表。用戶對(duì)你的App靠不靠譜的判斷很多時(shí)候是從設(shè)置頁(yè)的細(xì)節(jié)感受出來的。比如退出登錄按鈕放在哪里、清除緩存有沒有即時(shí)反饋、版本號(hào)是不是準(zhǔn)確這些體驗(yàn)直接影響信任感。1.3 哪些功能留在Flutter層哪些必須走原生通道劃分標(biāo)準(zhǔn)很簡(jiǎn)單不依賴設(shè)備底層能力且數(shù)據(jù)可以自己維護(hù)的全留在Flutter層必須觸發(fā)系統(tǒng)行為或讀取系統(tǒng)信息的才走原生通道。具體來說用戶協(xié)議和隱私政策頁(yè)面我們用Flutter內(nèi)置的WebView視圖容器打開但OpenHarmony上Flutter的WebView插件適配還不完整這個(gè)后面會(huì)成為坑。版本號(hào)在一個(gè)端上可以直接用插件讀取但換到OpenHarmony后同樣的代碼會(huì)拋異常。消息通知開關(guān)的顯示不能只看本地存的值還要去查詢系統(tǒng)通知權(quán)限否則用戶在系統(tǒng)設(shè)置里關(guān)了通知App里的開關(guān)還亮著雙方就對(duì)不上賬。做技術(shù)選型時(shí)我心里要反復(fù)權(quán)衡的就是這類問題。設(shè)計(jì)原則是Flutter層只負(fù)責(zé)狀態(tài)展示和用戶交互所有“拿不準(zhǔn)能不能跨端”的調(diào)用都封到service層后面這樣出了兼容問題只改一處。1.4 當(dāng)前的適配現(xiàn)實(shí)要先講清楚這里必須說一句實(shí)在話Flutter在OpenHarmony上的運(yùn)行時(shí)目前主要是靠社區(qū)維護(hù)的fork版本跟進(jìn)主分支并不是所有Flutter插件都有OpenHarmony實(shí)現(xiàn)。有的插件只有Android和iOS目錄編譯到OpenHarmony時(shí)會(huì)直接報(bào)錯(cuò)。你可以在項(xiàng)目的.flutter-plugins-dependencies文件里看哪些插件被加載了凡是只有android和ios路徑、沒有ohos路徑的都需要自己補(bǔ)平臺(tái)實(shí)現(xiàn)。這不是項(xiàng)目團(tuán)隊(duì)能繞開的成本。我們當(dāng)時(shí)跑原生通道時(shí)前前后后補(bǔ)了大概幾個(gè)原生接口代碼量不大但排查過程非常燒時(shí)間。所以如果你打算在OpenHarmony上做Flutter項(xiàng)目最好提前做一輪插件兼容性盤點(diǎn)。2. 工程環(huán)境與目錄組織先讓Flutter在OpenHarmony上跑起來2.1 環(huán)境依賴與SDK準(zhǔn)備Flutter構(gòu)建OpenHarmony應(yīng)用環(huán)境準(zhǔn)備跟普通Flutter開發(fā)有一點(diǎn)區(qū)別。我們用的大致流程是這樣的# 拉取帶OpenHarmony適配的Flutter SDK社區(qū)維護(hù)的fork版本 git clone -b ohos https://gitee.com/openharmony-sig/flutter_flutter.git export PATH$PWD/flutter_flutter/bin:$PATH # 安裝OpenHarmony SDK與DevEco工具并配置環(huán)境變量 # OHOS_SDK_HOME 指向OpenHarmony SDK目錄 # 驗(yàn)證環(huán)境 flutter doctor -v需要注意不同時(shí)期的適配分支名可能不同具體以倉(cāng)庫(kù)說明為準(zhǔn)。環(huán)境變量配置好之后用flutter doctor能看到OpenHarmony相關(guān)的檢查項(xiàng)類似OpenHarmony toolchain is available這種提示。如果缺失依賴按提示安裝就行這一關(guān)沒有太多技術(shù)含量但很磨人。2.2 項(xiàng)目目錄如何規(guī)劃工程創(chuàng)建好后默認(rèn)會(huì)生成ohos目錄作為OpenHarmony原生殼工程這個(gè)目錄負(fù)責(zé)最終打包成hap安裝包。而Dart代碼全部放在lib目錄下。我們內(nèi)部把設(shè)置模塊單獨(dú)作為一個(gè)feature來維護(hù)lib/ src/ app.dart features/ settings/ data/ # 本地狀態(tài)管理與持久化封裝 widgets/ # 通用設(shè)置項(xiàng)組件 pages/ # 設(shè)置一級(jí)頁(yè)與二級(jí)頁(yè) services/ # 平臺(tái)通道封裝不直接暴露MethodChannel l10n/ # 本地化文案為什么按feature而不是按類型來分因?yàn)樵O(shè)置模塊后續(xù)一定會(huì)擴(kuò)展功能比如增加“切換賬號(hào)”“深色模式跟隨系統(tǒng)”等如果所有頁(yè)面都堆在pages目錄下很快會(huì)變得沒法看。按feature內(nèi)聚之后每個(gè)模塊自上而下形成閉環(huán)找問題的范圍能控制在一個(gè)目錄里。2.3 編譯、安裝與首跑驗(yàn)證配置完成后用DevEco打開ohos目錄構(gòu)建hap包然后通過命令行安裝到OpenHarmony真機(jī)hdc install entry/build/default/outputs/default/entry-default-signed.hapFlutter引擎會(huì)作為原生庫(kù)打包進(jìn)hap里。第一次啟動(dòng)可能比普通App慢一些因?yàn)橐鲆娉跏蓟_@個(gè)階段我最常遇到的問題是簽名配置不對(duì)導(dǎo)致安裝失敗報(bào)錯(cuò)是SignatureNotFoundException處理辦法是在構(gòu)建配置里補(bǔ)充簽名信息。跑通這一步之后Flutter層的代碼修改可以通過增量編譯同步到設(shè)備。2.4 模塊初始化與路由約束設(shè)置模塊入口我們是按頁(yè)面掛載路由來管理的沒有做成全局單例。這樣做的原因是設(shè)置頁(yè)本身不承擔(dān)核心業(yè)務(wù)狀態(tài)每次進(jìn)入都重新拉取用戶摘要和開關(guān)配置能避免在多個(gè)頁(yè)面共享可變單例時(shí)出現(xiàn)臟數(shù)據(jù)。但如果你的設(shè)置頁(yè)里有一些需要長(zhǎng)期緩存的配置比如主題色那還是建議把這些配置單獨(dú)拆成一個(gè)ConfigService來持有。3. 設(shè)置頁(yè)UI架構(gòu)一組能復(fù)用的設(shè)置項(xiàng)組件3.1 頁(yè)面骨架與分組設(shè)計(jì)設(shè)置頁(yè)整體結(jié)構(gòu)是Scaffold AppBar ListView列表按業(yè)務(wù)分成三個(gè)區(qū)賬號(hào)安全區(qū)、通知與通用區(qū)、關(guān)于區(qū)。這樣用戶掃一眼就知道設(shè)置項(xiàng)歸屬哪個(gè)分類也不會(huì)因?yàn)閹资畟€(gè)列表項(xiàng)平鋪而顯得雜亂。Scaffold( appBar: AppBar(title: Text(設(shè)置)), body: ListView( children: [ _buildAccountSection(), _buildNotificationSection(), _buildGeneralSection(), _buildAboutSection(), ], ), )每個(gè)分區(qū)內(nèi)部又用SettingGroup組件統(tǒng)一包裹確保分組標(biāo)題的字體、間距、分割線風(fēng)格一致。這里要注意的是不要使用Card給每一行單獨(dú)加邊框因?yàn)榭ㄆ短缀箝g距容易失控在低分辨率設(shè)備上看起來非常擁擠。3.2 封裝一個(gè)可配置的SettingItem設(shè)置頁(yè)每一行幾乎都是左標(biāo)題、右側(cè)值和可能的開關(guān)變化點(diǎn)集中在圖標(biāo)、跳轉(zhuǎn)、開關(guān)回調(diào)。我們封裝了一個(gè)SettingItem組件參數(shù)大致這樣class SettingItem extends StatelessWidget { final String title; final String? subtitle; final IconData? leadingIcon; final Widget? trailing; final VoidCallback? onTap; final bool showDivider; const SettingItem({ super.key, required this.title, this.subtitle, this.leadingIcon, this.trailing, this.onTap, this.showDivider true, }); override Widget build(BuildContext context) { return InkWell( onTap: onTap, child: Padding( padding: EdgeInsets.symmetric(horizontal: 16, vertical: 14), child: Row( children: [ if (leadingIcon ! null) Icon(leadingIcon), SizedBox(width: 16), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text(title, style: TextStyle(fontSize: 16)), if (subtitle ! null) Text(subtitle!, style: TextStyle(fontSize: 12, color: Colors.grey)), ], ), ), if (trailing ! null) trailing!, ], ), ), ); } }封裝的時(shí)候有個(gè)容易忽視的點(diǎn)onTap必須放在InkWell上而不是整個(gè)Row上否則在Material3下點(diǎn)擊水波紋的區(qū)域不完整視覺效果很怪。3.3 開關(guān)項(xiàng)與消息通知的交互細(xì)節(jié)通知類開關(guān)我們直接用SwitchListTile但自己包了一層SettingSwitchItem把value、onChanged、title透?jìng)鞒鋈?。真正麻煩的地方不在UI而在于處理狀態(tài)回寫。用戶的習(xí)慣是快速開關(guān)一秒鐘內(nèi)可能連續(xù)切換多次。如果每次變更都立刻發(fā)起平臺(tái)通道查詢和持久化不僅費(fèi)電還容易出現(xiàn)競(jìng)態(tài)上一次寫入失敗UI卻保留了成功狀態(tài)。我們的做法是先在Flutter層做樂觀更新UI立即改變?nèi)缓螽惒綄懭氡镜卮鎯?chǔ)并調(diào)用原生通道如果原生通道返回失敗再用一個(gè)SnackBar提示用戶狀態(tài)未同步并回滾開關(guān)。這樣做下來用戶的感知流暢度提升很明顯。3.4 主題模式與深淺色適配設(shè)置頁(yè)里還做了一個(gè)主題模式選擇跟隨系統(tǒng)、淺色、深色。這個(gè)功能實(shí)現(xiàn)不難enum AppThemeMode { system, light, dark } ThemeMode _resolveThemeMode(AppThemeMode mode) { switch (mode) { case AppThemeMode.system: return ThemeMode.system; case AppThemeMode.light: return ThemeMode.light; case AppThemeMode.dark: return ThemeMode.dark; } }真正的坑在于OpenHarmony部分設(shè)備對(duì)系統(tǒng)深色模式的調(diào)度跟Android不太一樣默認(rèn)值獲取可能延遲。所以我們?cè)趩?dòng)時(shí)讀配置、設(shè)置themeMode后還在MaterialApp外面包了一層短時(shí)間的等待等系統(tǒng)MediaQuery返回穩(wěn)定值后再構(gòu)建首頁(yè)。這個(gè)細(xì)節(jié)后來被證實(shí)非常有用否則用戶會(huì)看到閃一下白屏再變黑的現(xiàn)象。4. 核心設(shè)置功能逐一落地4.1 用戶信息展示與退出登錄設(shè)置頁(yè)頂部是一張用戶摘要卡片頭像、昵稱、手機(jī)號(hào)脫敏展示。點(diǎn)擊后進(jìn)入個(gè)人資料頁(yè)。這一塊本身不復(fù)雜重點(diǎn)是退出登錄。退出按鈕放在賬號(hào)安全區(qū)的底部點(diǎn)擊后彈出二次確認(rèn)Dialog文案明確說明退出后收藏和瀏覽記錄不會(huì)被刪除但需要重新登錄才能使用購(gòu)買和發(fā)布功能。確認(rèn)后執(zhí)行以下步驟調(diào)后端接口退出忽略網(wǎng)絡(luò)錯(cuò)誤保證本地一定能退出清理本地Token、用戶緩存、購(gòu)物車草稿跳轉(zhuǎn)到登錄頁(yè)并清空路由棧。順序很重要。如果先跳轉(zhuǎn)再清數(shù)據(jù)登錄頁(yè)可能在初始化時(shí)讀到半截用戶信息。我們的經(jīng)驗(yàn)是先清數(shù)據(jù)再跳轉(zhuǎn)而且跳轉(zhuǎn)用pushAndRemoveUntil避免用戶按返回鍵回到已退出的頁(yè)面。4.2 清除緩存計(jì)算與刪除清除緩存做了兩個(gè)狀態(tài)未點(diǎn)擊時(shí)展示當(dāng)前緩存大小點(diǎn)擊后先計(jì)算并彈出Dialog提示確認(rèn)確認(rèn)后展示一個(gè)轉(zhuǎn)菊花刪除完成后顯示緩存已清空。緩存大小的計(jì)算依賴path_provider獲取臨時(shí)目錄。思路是這樣的Futureint _calculateCacheSize() async { final Directory tempDir await getTemporaryDirectory(); if (!await tempDir.exists()) return 0; int total 0; await for (final entity in tempDir.list(recursive: true, followLinks: false)) { if (entity is File) { total await entity.length(); } } return total; }這個(gè)過程中有個(gè)性能問題如果目錄里文件數(shù)量特別多遞歸遍歷會(huì)造成卡頓。所以我們把計(jì)算工作放到一個(gè)Isolate里去跑避免阻塞UI線程。刪除的時(shí)候同樣在Isolate里執(zhí)行刪除前給關(guān)鍵路徑加了一個(gè)白名單防止誤刪登錄臨時(shí)憑證。雖然臨時(shí)目錄里一般不會(huì)放重要東西但多一道檢查總是好的。4.3 關(guān)于頁(yè)與版本號(hào)獲取關(guān)于頁(yè)包括版本號(hào)、用戶協(xié)議、隱私政策、開源許可列表。版本號(hào)在Android上可以用package_info_plus讀但在OpenHarmony上這個(gè)插件當(dāng)時(shí)沒有完整實(shí)現(xiàn)于是我們通過MethodChannel讀取static const MethodChannel _channel MethodChannel(com.example.app.settings/platform); FutureString getAppVersion() async { final String version await _channel.invokeMethod(getAppVersion); return version; }原生側(cè)的邏輯很簡(jiǎn)單從配置里讀出版本名和版本號(hào)拼成x.y.zbuild格式返回給Dart層。封裝好之后其他模塊比如更新提醒也復(fù)用了同一個(gè)通道沒有重復(fù)造輪子。4.4 消息通知開關(guān)的完整鏈路消息通知有三個(gè)開關(guān)交易通知、社區(qū)通知、促銷通知。我們希望每個(gè)開關(guān)的狀態(tài)都存到SharedPreferences里并且在修改時(shí)同步到原生。這里有一個(gè)用戶偏好邏輯交易通知必須能獨(dú)立開關(guān)而且只要關(guān)掉交易通知即使其他通知開著也不影響交易消息的攔截。這是后端推送策略決定的前端開關(guān)狀態(tài)只是一個(gè)展示入口。所以開關(guān)的默認(rèn)值必須由后端下發(fā)的用戶配置決定不能用本地寫死的默認(rèn)值。如果后端配置拉取失敗我們給一個(gè)默認(rèn)的“全部開啟”方案但會(huì)在頁(yè)面頂部用一條淺灰色提示條告訴用戶配置暫未同步。4.5 收貨地址與常見問題頁(yè)二手置換App里設(shè)置頁(yè)還要作為收貨地址的入口。點(diǎn)擊后跳轉(zhuǎn)到地址管理二級(jí)頁(yè)面這個(gè)頁(yè)面負(fù)責(zé)增刪改地址并把選中的默認(rèn)地址回傳設(shè)置頁(yè)做展示。地址數(shù)據(jù)存于本地?cái)?shù)據(jù)庫(kù)不經(jīng)過后端適用于買家自提之外的郵寄場(chǎng)景。常見問題頁(yè)我們采用靜態(tài)JSON驅(qū)動(dòng)渲染每條問題一個(gè)標(biāo)題、一個(gè)正文展開和收起用ExpansionTile實(shí)現(xiàn)。這樣做的好處是運(yùn)營(yíng)同學(xué)要改內(nèi)容時(shí)只更新資源文件不需要發(fā)版。5. OpenHarmony適配過程中真實(shí)踩過的坑5.1 文件路徑差異與兼容第一個(gè)坑來自path_provider在OpenHarmony上返回的路徑結(jié)構(gòu)。Android上getTemporaryDirectory()返回的是/data/user/0/{包名}/cache而OpenHarmony上返回的是類似/data/storage/el2/base/haps/entry/cache的路徑。我們的清理代碼一開始用了硬編碼的/cache后綴拼接結(jié)果在OpenHarmony上算出來的目錄根本不存在。解決方案是徹底放棄手動(dòng)拼接路徑一律使用path_provider或者原生通道返回的語(yǔ)義化路徑并在用之前做存在性判斷。還有一個(gè)細(xì)節(jié)是OpenHarmony的文件系統(tǒng)區(qū)分el1和el2前者用于設(shè)備級(jí)數(shù)據(jù)后者用于用戶級(jí)數(shù)據(jù)清緩存業(yè)務(wù)一般只動(dòng)el2的用戶目錄。5.2 消息通知開關(guān)在系統(tǒng)級(jí)別不同步設(shè)置頁(yè)的開關(guān)是本地記憶的但用戶完全可以去系統(tǒng)設(shè)置里把App的通知權(quán)限關(guān)掉。這導(dǎo)致兩邊不同步Flutter側(cè)開關(guān)顯示開系統(tǒng)卻已經(jīng)屏蔽了通知。我們最初沒意識(shí)到這個(gè)問題后來測(cè)試真機(jī)時(shí)發(fā)現(xiàn)通知收不到排查了半天才發(fā)現(xiàn)是系統(tǒng)開關(guān)被手動(dòng)關(guān)了。修正方法是設(shè)置頁(yè)每次進(jìn)入時(shí)通過MethodChannel查詢系統(tǒng)通知權(quán)限狀態(tài)。如果系統(tǒng)權(quán)限是關(guān)閉的不管本地配置是什么三個(gè)通知開關(guān)都置灰并提示用戶去系統(tǒng)設(shè)置打開。雖然查系統(tǒng)權(quán)限也需要在原生側(cè)補(bǔ)接口但這一步是必須的。5.3 平臺(tái)通道命名沖突項(xiàng)目里多個(gè)模塊都使用Flutter的MethodChannel最初很多通道名都叫default或者channel。合并代碼后在OpenHarmony真機(jī)上動(dòng)不動(dòng)報(bào)MissingPluginException。原因其實(shí)很簡(jiǎn)單同一個(gè)Name的通道在原生側(cè)被覆蓋注冊(cè)導(dǎo)致后注冊(cè)的模塊收不到前一個(gè)模塊的消息。后來我們把通道名全部改成帶模塊前綴的格式比如com.example.app.settings/notification、com.example.app.settings/platform。這個(gè)改動(dòng)是一次性遷移工作但做完之后平臺(tái)通道相關(guān)的毛刺幾乎絕跡。建議所有通道名從一開始就按包名.模塊名/能力名來命名別偷懶。5.4 字體渲染與字號(hào)縮放OpenHarmony默認(rèn)字體跟Android不完全一樣同一個(gè)fontSize: 14在部分設(shè)備上看起來更小。而且如果用戶開了系統(tǒng)的字體縮放設(shè)置項(xiàng)里的標(biāo)題會(huì)被截?cái)?。我們的處理方式是設(shè)置項(xiàng)標(biāo)題的TextStyle鎖定在邏輯尺寸并對(duì)textScaleFactor做一次上限約束比如最大不超過1.3。再配合maxLines: 1和overflow: TextOverflow.ellipsis。這樣就算部分設(shè)備縮放很激進(jìn)頁(yè)面也不會(huì)整個(gè)崩壞。5.5 生命周期與頁(yè)面恢復(fù)設(shè)置頁(yè)在后臺(tái)被系統(tǒng)殺掉再回前臺(tái)時(shí)會(huì)出現(xiàn)開關(guān)狀態(tài)和實(shí)際狀態(tài)不一致的問題。根因是我們只在頁(yè)面initState時(shí)讀了一次配置。后來改成在WidgetsBindingObserver的didChangeAppLifecycleState里當(dāng)App從后臺(tái)恢復(fù)時(shí)重新拉取通知權(quán)限和緩存大小。這個(gè)改動(dòng)成本很小但非常影響體驗(yàn)。5.6 日志與調(diào)試OpenHarmony真機(jī)調(diào)試用hdc工具類似adb。抓Flutter側(cè)日志時(shí)如果是release包Dart層的print不會(huì)有輸出所以調(diào)試期一定要用debug包。原生側(cè)日志在系統(tǒng)日志里過濾關(guān)鍵字找到進(jìn)程。還有一個(gè)便利手段是通過DevEco的日志面板查看MethodChannel調(diào)用流程能清楚看到方法名和傳參。有時(shí)候Dart說調(diào)用了原生原生說沒收到絕大多數(shù)是通道名對(duì)不上。6. 測(cè)試、性能與后續(xù)要做的事6.1 真機(jī)與模擬器的差異我們一開始主要用模擬器調(diào)試設(shè)置頁(yè)跑得很順以為適配工作差不多了。上了真機(jī)才發(fā)現(xiàn)模擬器里很多系統(tǒng)調(diào)用是空實(shí)現(xiàn)比如通知權(quán)限查詢永遠(yuǎn)返回grantedWebView也不一定真的加載。所以適配類工作必須早一點(diǎn)上真機(jī)。建議團(tuán)隊(duì)準(zhǔn)備至少一臺(tái)OpenHarmony真機(jī)作為測(cè)試基準(zhǔn)別只依賴模擬器跑冒煙。6.2 設(shè)置頁(yè)的性能注意點(diǎn)設(shè)置頁(yè)雖然簡(jiǎn)單性能問題仍然存在。幾個(gè)要注意的地方列表項(xiàng)全部使用const構(gòu)造避免頁(yè)面重建時(shí)無(wú)謂的組件diff緩存大小計(jì)算只在進(jìn)入頁(yè)面時(shí)進(jìn)行不要做成實(shí)時(shí)輪詢每次開關(guān)切換不重建整個(gè)ListView只更新對(duì)應(yīng)StatefulWidget清除緩存時(shí)讓按鈕進(jìn)入loading態(tài)防止用戶連續(xù)點(diǎn)擊。6.3 可落地的Widget測(cè)試設(shè)置頁(yè)非常適合做Widget測(cè)試因?yàn)樗慕换ツJ角逦?。我們寫了一個(gè)冒煙用例保證頁(yè)面能正常渲染出所有分區(qū)和關(guān)鍵設(shè)置項(xiàng)。測(cè)試代碼大致是這樣的testWidgets(設(shè)置頁(yè)渲染關(guān)鍵設(shè)置項(xiàng), (tester) async { await tester.pumpWidget(const App()); expect(find.text(賬號(hào)與安全), findsOneWidget); expect(find.text(清除緩存), findsOneWidget); expect(find.text(關(guān)于我們), findsOneWidget); });這類測(cè)試不用覆蓋所有二級(jí)頁(yè)面但能攔住最基礎(chǔ)的“頁(yè)面白屏”和“關(guān)鍵入口丟失”問題。6.4 后續(xù)擴(kuò)展方向設(shè)置功能做完后我們規(guī)劃了幾件事多語(yǔ)言文案的完整覆蓋、無(wú)障礙屏幕閱讀支持、遠(yuǎn)程配置開關(guān)讓運(yùn)營(yíng)無(wú)需發(fā)版就能控制功能灰度以及把設(shè)置頁(yè)的常用操作接上埋點(diǎn)系統(tǒng)。比如“退出登錄點(diǎn)擊率”“清除緩存使用人數(shù)”這些指標(biāo)能直接幫助判斷新登錄引導(dǎo)和存儲(chǔ)優(yōu)化策略是否有效。我個(gè)人在實(shí)際操作中的體會(huì)是設(shè)置頁(yè)是所有基礎(chǔ)能力的“最后一道門”。把設(shè)置功能做得穩(wěn)不只是讓App看起來完整更是給自己留了一條高效驗(yàn)證平臺(tái)能力的測(cè)試通道。所以如果你正在做類似的跨端App別小瞧這個(gè)模塊。先把設(shè)置頁(yè)從里到外啃下來后面所有復(fù)雜功能都有了底氣。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日本综合色图| 午夜精品五区| www.婷婷五月天| www.91欧美| V A在线| 黑人嘿嘿嘿超爽免费视频| 久久的网站啊啊啊啊啊| 天天噜| 婷婷操逼| 久久嫩草| 殴美牲| 亚洲精品97| 99性视频| 欧美色999| 亚洲欧洲视频小说在线观看| 呦呦一区| 久久9亚洲| 亚洲日韩在线a不卡99精品 | 国产黄色剧情影片麻豆免费播放| 国产一区二区三区中文字幕| 少妇综合| 一区二区 电影 亚洲| 午夜福利1区2区3区| 97超碰国产亚洲精品资源| 欧美91久久久久| 人人操人人插人www| 日本不卡卡一区| 国产人妻久久精品一区二区三区| 黄色一级视| 青青草久草AV| 艹比视频国产精品| 综合激情一一91| 国产精品熟女丝袜一区二区| 干b网| 欧日a| 加勒比伊人影院| 美女写真| 草久在线| 任我爽视频在线观看| 啊啊啊操死我| 亚洲黄日韩无码专区| 人人操 欧美| 美女久久久久久久| 欧美日韩不卡a片| 精品亚洲俞拍视频一区| 婷婷色播婷婷| 久久精品熟妇丰满人妻99| 116美女午夜| 国内偷拍精品一区二区| 亚洲自拍另类丝袜综合| 精品在线观看视频在线| 丝袜美腿丝袜| 婷婷五月天久久精品视频一区二区三区| 天天综合欧美| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 蜜桃午夜视频一区二区 | 日韩精品国产一区二区| 91精品国产91久久久久久久久久久久| 久操操| 国产一级高清免费观看| 精品小视频在线| 性爱乱伦一区| 偷拍精品一区二区三区| 黄站在线免费观看| AV老汉| 强奸乱伦动态污图免费 | 97在线亚洲| ′ !γ}丶。。久久精品欧美一区二区三区| 4虎在线观看| 欧美大码在线视频| 啪啪资源网| 伦理第一页| 午夜啊啊啊| 色欲日韩欧美在线一区| 五月亭亭六月丁香| 97资源站国产精品| 亚欧洲一区二区视频| 一色网男人的天堂| 久久社区一区二区三区| 日韩免费一级性爱视频| 少妇高潮喷水无套久久久久久| 99色悠悠| 亚洲中文人妻色| 97任你吞精| 农村女一级毛卡片| 色69大色97香蕉| 操我啊啊啊啊啊| 抽插无码高清一区| 欧美日韩香蕉| 亚洲人体视频在线观看| 国产999精品久久久| 婷婷香网站| 色色色欧美| 97人妻免费中文字幕| 中文字幕乱码在线| 人妻娇喘 激情视频| 你草精品在线视频| 96精品在线| 黄片不用下载在线观看| 搡老女人老妇女AAA一VU麻豆| 色汉综合| 老熟女91视频| 欧美色交| 久久久久久无码人妻中文字幕| 欧美熟女妇同| 亚洲精品一区二区免费在线观看| 久久久久久久久久久999| 久久久久久亚洲精品不卡人乳| 亚洲精品天堂久久A∨51成人漫| 九九九九精品精| 日韩成人人妻网站| 久久综合久色欧美综合狠狠| 蜜桃一区二区三区| 国产精品天干天干综合网麻豆| 天天综合AV| 国产av尤物| 99热亚洲| 91欧美高清| 99热在线播放| 国产女人高潮视频| 国产精品久久发布| 亚洲人精品久久久喷水| 中文字幕日韩综合| 婷婷导航| 人妻熟女字幕一区二区| 色五月第四色| 欧美性区| 97精品第3页| 九九九九日本 | 91精品国产高清久久久久久,亚洲成人 | 97超碰天天爱天天爱| 国模限制级电影| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 色老汉色| 四季AV一区二区凹凸精品小说| 亚洲一二三精品久久网| 欧美亚男人的天堂| 97干综合网| 东京热不卡视频| 国产成人网| 国产真乱mangent| 少妇熟女1区2区3区| 第四色奇米影视777| 69av一区二区三区| 女人 A一级| 精品黑人一区二区| 久久久98网站免费视频| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 亚洲精品电影| 亚洲av青草久久一区二区| 男女日B国产| 乱伦Av网| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV | 人人玩人人添人人澡免费| 一本色道久久天天射天天干| 日本色色色视频| 香蕉综合网| 久久9亚洲| 青青草手机在线免费观看| 人妻人妻天天碰| 国产97/欧美| 乱性AV| 岛国AB视频| av九九| 精品人妻夜夜草| 亚洲国产亚洲天堂| 蜜臀99久| 91社操逼| 精品一区二区三区最新| 亚洲日本大香蕉1| 亚洲美女av无码| 亚洲一区二区三区中文字幕| 国产亚洲 中文欧美久久| 神马久久久久久久久久| 殴美性天天| 成人无码电影在线观看网| AV免费在线播放一区| 天天综合~91入口| 97国产色图 | 丝袜内射| 欲色综合| 伊人网综合在线视频| 色综合天天| 国产精品久久久九九九| 国产精品露脸在线观看| 嗯嗯嗯啊啊啊操的我好爽| 欧美97se| 人人摸人人叼| 裸体1区| 欧美色视| 五月丁香综合网| 色欧洲97| 亚欧成人综合影院| 4141514逼喷水三级片| 99国产精品自在自在| 噜噜噜噜久久久精品免费| 国产97色在线 | 亚洲| 欧亚性爱在线视频| 一区二区三区四区五区久久久久久| 久久久爆乳翘臀一线天伦理视频| 91五月天| 国内黄色精品| 在线视频亚洲无码| 日韩无码服务区| 天堂国产AV| 久久精品一区二区三区不卡| 妺妺跟我一起洗澡没忍住| 四虎午夜影院| 综合第一页| 亚洲色图第一页| 97露脸精品丝袜| 视频在线观看一二三区| 嗯嗯啊啊用力视频免费| 自拍视频大全亚洲专媒视频/一区二区三区| 福利在线黄片| 日韩中文字幕在线视频观看| av午夜影院在线播放| 操B视频日韩无码| 美女黄站| 另类天堂| 国产强奸乱伦欧美| 久久精品国产亚洲AV清纯| 9精品久久久久| 爱丝福利| 日本道人妻久久久在线不卡色视频| 久久久久密臀视频| 亚洲天堂资源| 亚洲久久天堂| 91久热| 性色高清..……| 加勒比伊人综合| 色大师网站www永久网站视频| 97亚洲一区| 99.色网| 婷婷激情一区二区三区俺也去| 亚洲熟妇自偷自拍另欧美| 激情五月天色色| 亚洲图片偷拍视频区| 综合色啪| 国产精品一区人妻精品阁在线| 五月天婷婷欧美三区| 嗯啊不要在线观看嗯啊| 欧美制服网站美腿丝袜| 超碰中文字幕人妻草一区| 九热大香蕉| 欧美性爱一区二区三区四区| 欧美激情久| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 日韩人妻无码精品系列| 伊人四虎综合| 欧美 亚洲 在线| 性色AV蜜色av色欲av| 永久免费av无码网站国产app | 91狠狠色丁香婷婷综合久久| 精品国产自在在线99| 欧美亚洲第1页| 青青草字幕AV| 美女黄页网站| 色哟哟AⅤ| 欧美疯狂做爰xxxx| 超碰午夜在线| 精品丰满熟妇人妻一区| 91天天| 搡老女人老妇女AAA一VU麻豆| 搡老人老9丨女老熟人| 香蕉婷婷| 亚洲精品骚逼| 偷拍盗拍亚洲色图图片| 一区二区三区高清天码| 五月丁香啪啪网| 91原创在线观看| 亚洲凸凹超碰成人| 熟妇视频一区二区三区在线| 午夜120视频在线观看| 五月丁香综合网| 你草精品在线视频| 91女优在线观看| 92一区二区| 日韩精品视频在线观看一卡二卡| 久久久久久中文字幕中文字幕最新| 国产妇女精品视频青青草| 啊啊啊啊嗯嗯在线久久久| 国产无码成人无码| 99热思思| 久久久久久中文| 激情文学88| 国产激情av女片自拍| 1024亚洲中文字幕久在线看片你懂的| 久久久少妇诱惑精品视频| 欧美乱伦专区| 黄污污污污| julia ann久久| 强被迫伦姧在线观看无码网站| 熟女人妻一区二区三区| 我中文字幕6区| 无码久久国产 | 偷偷人人精品女女久久| 91爆操视频| 激情文学欧美| 四虎国产精品永久在线囯在线 | 亚洲色图伊人网| 人妻精品视频一区二区三区| 99婷婷一区二区| 综合国产影视三级| 免费的av网| 少妇久久久久久| 欧美v亚洲v日韩v最新在线二区| 91精品国久久久久久无码| 日本色色色网站免费看不卡| 中文字幕二区日韩天堂| 久久久四区| 久久99网站| 性欧美999| 国产精选三级在线观看| 啊啊啊久久久视频| 天天草天天干天天日| 久久夜精品一区二区三区| 国产精品视屏| sss视频华人在线| 中文字幕一区二区三区人妻不卡 | 日韩少妇一区二区三区| 一本色道久久综合熟妇| 国产精品久久久久久久黄无码| 国内97干免费看| 97在线视频观看网站| 97看操| 一区二区三区亚洲| 97亚洲国产| 婷婷久久大香蕉| 欧美日韩另类激情图片| 精品网站9999| 欧亚在线视频| 国产精品久久蜜乳av| 中文字幕国产精品1区| 视频国产欧美在线播放| 九九九九日本| 欧亚在线视频| a片偷拍视频| 校园春色 男人天堂| 天天在线91| 日韩精品99999| 无码不卡亚洲成?人片| 久久最新视频免费观看| 97欧美性爱| 亚洲性高潮| 69AV女优男人的天堂| 中文字幕精品日韩中文字幕| 可乐操在线| 俺去久久| 超97在线精品视频| 天天操妹子| 99re不伦| 操逼日韩无码| 激情五月天插| 香蕉99秘 一区精品蜜桃臀| 久久久久9久久久久| 午夜激情成人在线观看| 97视频免费| 国产精品久久久九九九| 69精品少妇一区二区三区蜜桃| 日本人妻中文字幕精品| 欧美天天影院| 日本加靬比网站发布页| 99视频在线| 欧美不卡在线一区二区| 校园春色 亚洲| 97超碰逼| 黄色大片一区二区密桃丝袜| 中国一区二区亚洲人妻| 一起草高清无码| 亚洲熟女一区二区| 欧美亚洲日韩16色| 精品久久久久,69国产成人精| 欧美成人A天堂片在线观看| 国产一线二线三线av| 国产偷人妻精品一区二区在线| 狠狠狠狠狠干| 簧片免费看视频| 国产极品精品美女视频| 欧美性爱第1 页| 国产精品另类一区大香蕉| 九九九久久久久| 人妻少妇精品一区二区三区| 九九RE视频在线精品| 久久久久亚洲av综合波多野制衣| 热99这里有精品综合久久 | 国产一区二区av综合| 久久 国产 无码| 友优传媒精品在线一区二区| 啊啊啊男女| 国产热av| 日韩电影免费网站麻豆视频| 欧美高潮| 欧洲站一级二级三级h| 国产亚洲精品美女| 精品亚洲俞拍视频一区| 99re69| 亚洲男人天堂网久久| 婷婷香蕉欧美在线一区二区三区| 啊啊啊不要好疼视频| 啊v视频在线观看| 黄色在线网站| 亚洲AV无线| 久久久久亚洲av综合波多野制衣| 黄色视频60分钟| 亚洲天堂一区二区久久| 日本东京热加勒比久久| 日本熟女中文字幕一区| 黄色高清无码无码破解免费暗网| WWW黄片COM| 亚洲四虎熟女精品| 五月综合激情| 午夜天天碰综合视频| 天天干天天爽| 久久久精久久久| 色91综合网| 亚洲国产精品久久久男人的天堂| 国产亚洲日本| 全国男人天堂网| 精品久久97| 亚洲中文字幕熟女| 日韩av不卡在线看| 亚洲四虎熟女精品| 97人妻色| 91路www| 骚妻少妇精品性色无码四色A V| 日本 情色 1区2区3区| 日本精品一区二区三| 久久久草草精品| 78m啪啪啪| 秋霞 色色| 曰韩操B| 91精品久久久久久综合五月天| 国产无套粉嫩白浆在| 禁片 高清 在线观看视频网站| 亚洲熟妇丝袜在线观看| 久久99精品九九久久久婷婷| 成人三级片一区二区三区视频| 另类图片综合| 五月天黄色激情视频| 天天爽天天爽| 肉丝无码中文高清| 狠狠操狠狠操操| 久久夜黄色无码A级大片| 色婷婷综合网站| 亚洲天堂女优在线| 天天影视91看看| 97超碰人人操人人操| 黄色区免费观看中文字幕| 99热超碰| 久久久久网站-538在线视频-欧美永久乱码 | 美女尤物人人操| 日本久久网| 欧美色图私拍91| 密臀在线视频| 强奸乱伦中文字幕AV| 97超碰国产亚洲精品资源| 秋霞鲁丝午夜无码一区二区三| 欧美翘臀视频网站一区二区三区| 成人性爱视频在线看| 长长久久88视频| 成人久久久精品| 成人精品无码| 亚洲人成色9999精品久久| 欧美日韩人妻婷婷一区| 欧美传媒| 精品久久久久瑟瑟| 久久三区四区| av一区二区三区不卡| 猛交交| 欧美瑟综合| 天天综合网日韩7799| 欧美狠狠弄| 久久久久久久唑| 九九人人操| 自拍亚洲综合| 萌白酱自拍视频| 丝袜综合| 免费看黄片现成| 久久久艹艹艹| 精品人妻免费观看| 高清国产精品福利网站| 丰满的三级少妇欧美久久久| 亚洲女人毛茸茸91| 欧美日韩香蕉| 97日韩欧美亚洲| 国产 三级自拍| 蜜臀久久99'精品久久久| 小视频国产| 啊啊啊快操我视频| 91精品微拍福利| 亚洲熟妇熟在线电影视频| 亚洲激情视频| 强奸少妇AV导航网| 懂色Av| 爱欲AV| 九九精品99| 蜜臀色乳| 国产成人自拍视频在线| 97超级久久| 五月丁香啪啪网| 久一区久久蜜桃| 天天淫人人妻日日色| 91内射| 婷婷五月天久久精品视频一区二区三区 | 和协影院中文字幕三区| 99国产精品视频尤物| 成熟熟女国产精品一区二区| 蜜桃无码AV一区二区| 久热精品在线| 91女在线观看| 亚洲蜜乳av| 日韩成人小视频| 五月开心网| 日本东京热久久久电影| 强奸熟女一区二区三区| 99久久婷婷国产综合| 亚洲一二三四区| 98色网| 欧亚无码视频| 亚洲国产精品久久久久婷婷老年| 99精品在线| 日韩熟女无码| 亚洲欧美97√| 国产精品 午夜福利| 国产亚洲精品农村妇女| 亚洲图片91| 国产青视频| 国产免费永久精品无码| 婷婷在线视频在线观看| 日韩精品人妻中文字幕不卡乱码| 人妻一区二区三区| 中文字幕av亚洲在线| 搡老女人老91二区| 天堂亚洲精品久久老牛| 九九热免费国产视频婷婷伊人| 天天亚洲| 欧美日日人人天天| 久久理论字幕视频| 天堂种子在线www网资源| 97在线视频观看| 97超碰总站| 91视频观看网站| 新婚人妻扶着粗大强行坐下| 久久久久久99AV无码免费网站| 久久禁| 91天美传媒精品| 亚洲成人综合在线| 久久成人国产| 国产野战露脸在线播放| 精品亚洲| 老熟女综合网| 亚洲激情深爱文学小说网站| 九一精品牛牛一区二区| 亚洲人成色9999精品久久| 五月天玖玖资源站| 日韩美女啪啪一区| 蜜臀av中文字幕| 亚洲国产精品有声| 国内毛片热久久思思热| 女人天堂av在线播放| 超碰97综合在线| 国产风韵犹存熟妇三区| 激情欧美日韩女同久久| 91色黑人少妇| 97任你吞精| 99久久久无码精品国产人| 小说区 图片区色 综合区| 99少妇内射| 欧美色图片色哟哟| 青青草在线视频播放器| 超碰在线1234区| 欧美亚洲国产日本在线,久久精品国产| 国产精品肉丝自拍| 二区熟妇韩日| 婷婷激情一区二区三区俺也去| 色一射色一射| 欧美永久激情一区二区| 中文字幕亚洲欧美在线不卡| 宗合情欲网| 1024亚洲中文字幕久在线看片你懂的| 人人爽天天爽| 操人妻逼91| 日韩精品高清资源在线| 久久天天躁日日躁狠狠躁| 九九九午夜| 国产精品久久久999| 伊人玖玖网| 国产自产22区| 91精品久久久久| 日韩情色一区二区| 中国农村熟妇毛片视频| 国产成年免费大片黄在线观看| 岛国视频一二三区| 十八禁视频网站| 很很干很很操| 18一区二区三区| 亚洲91亚洲| 99爱爱| 久草看看看| 国产精品人妻免费精品| 亚洲欧美日韩二区视频| 操一区| 97人人草| 97硬碰| 欧美精品欧美精品系列 | 久操不卡视频| 国产呦精品一区二区三区下载| 色情成人五月天| 欧美日韩性感| 欧美天天综合站| 亚洲自拍青操视频| 69精品| 欧美综合娱乐久久| 日本女人操逼| 伊人国产视频| 欧美日韩亚洲天堂| 欧美亚洲第一页| 中文字幕国产精品1区| 天天内射| 91在线观看,天天综合| 久久成年片色大黄全免费网站| 无码最新| 小草三级久久观看| 大但人体久久久久| 婷婷伊人五月| 国产成人资源| 动漫片子网站3黄| 日本高清一区二区在线| 国产精品在线一区二区| 日本人妻一区二区| 99热免费| 精品久| 久久精品久久九九精品| 久久超碰爱| 欧美97在线欧| 中文字幕 一区二区 亚洲无码| 三四中文字幕| 亚洲中文字幕av| 亚洲中文一区二区三区| 国内91熟女人妻丝袜天天精品视频在线 | 91艹| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | ,成人免费啪啪视频| 大香蕉五月天婷婷| 国产精品网站www| 日日骚网站| 色婷婷九月天天综合| 欧美日韩人人早| 91情色| 婷婷久久五月天| 97超色| 无套内射人妻在线播放| 国产传媒1234区| 91操熟女| 亚洲综合春色| 大香蕉久久| 人妻少妇精品一区二区三区| 日本二区不卡| 色99在线| 91性感在线| 亚洲精品男人的天堂| 中文字幕第23区| 91啪啪| 国产操逼逼网| 干美女人妻| 免费啪啪啪网站18岁| 加勒比久久av| 蜜臀操逼黄色视频操的好爽| 日韩丨制服丨中文|在线| 久久av一级av少妇av高潮| 色九九九综合| 中国一区二区亚洲人妻| 午夜精品人妻二区三区| 777奇米影视777四色| 日韩特一级久久| 欧美十八禁在线看| 老熟女综合网| 人妻加勒比东京热| 亚洲天堂精品日韩电影| 亚洲日产专区| 男人天堂欧美| 久热久一区二区三区| 91精品无码久久久久久久| 日韩99神马视频片| 视频国产精品未满十八禁止在线观看| 大香蕉欧美伊| 免费观看性欧美一级| 国产精品suv一区| 色欲蜜臀AV| 亚洲清纯综合| 好湿好紧好爽 视频| 91麻豆天美| 日韩丝袜高跟制服在线观看| 操逼操网| 97免费在线观看| 上床不卡网站| 日本一级性爱| 91处女在线观看| 天天综合网1| 国内三级自拍小视频在线观看 | 久久黄片国产一区二区| 美欧老女人97| 女人被添高潮免费视频| 2024黄色视频| 97精品97久久| 女人的久久久| 国产精品亚洲高清在线| 国产麻豆91欧美一区二区久久婷婷国产精品| 亚洲 日本 一 二 三| 青青免费在线视频一区| 中文字幕色AV| 精品十三区| 精品久久人妻成人网| 日韩免费a级毛片无码a∨| 黄色一区三区| 久久久久人妻| 色色色色电影网| 性色av大全| 国产97av| 91精品丝袜久久久久久无码人妻| 婷婷伊人五月| 91亚洲网站| 经典丝袜一区| 日本丝袜美腿人妻九九| 九九热视频在线观看| 国产中文大片资源中文字幕| 欧美天天干| 亚洲高清在线se| 日韩超碰精品综合| 夜色五月天| 亚洲AV无码乱码在线观看性色| 欧美日韩啪啪电影| 中文字幕99999| 亚洲中文字幕久久无码精品| laoshunv91| 九九九久千久久激情蜜桃在线看 | 久热色情精品| www五月| 成人免费福利在线观看| A级毛片在线看免费| 亚洲加勒比| 人妻精品一区二区三区| 毛片99-全集电影手机免费观看完整-B029AV| 欧美永久激情一区二区| 久久日韩毛| 婷婷五月影院| 丁香五月偷拍| AA丁香综合激情| 图片区小说区| 国产精品成人蜜臀AV在线| 搞中出久久| 17c在线成人免费A片观看| 视频国产成人精品日本亚洲18| 一本色道久久综合精品婷婷| 亚洲欧美综合图片| 色诱avtt| 色色99| 免费A V在线| 日韩乱伦AⅤ| 免费观看网黄| 翔田千里爆乳巨臀无码| 大象AV在线| 亚洲国产丝袜熟女av| 亚洲素人综合| 99草精| 91成人精品| 人人妻人人爽一区二区三区| 嗯嗯嗯啊啊在线观看| 国产又长又大又粗的视频| 伊人aaa| 蜜桃丰满熟妇av无码区不卡| 久久熟女久| 综合九九| 亚洲脚交| 大香蕉久久| 精品国产乱码久久| 女性喷水高潮在线观看| 伊人一级免费黄片| 亚洲欧美另类图片| 久草在线| 99婷婷一区二区| 八戒午夜福利理论片| 午夜一级免费毛片| 无码聚合| 天综合网| 性性久久| 久久亚洲一区女同性恋中文字幕| 69精品| 久久久久久电影| 免费黄色A片| 欧美极度丰满熟妇hd| 吻戏激情性巴克| 亚91亚洲网| 欧美激情黑人| 亚洲av噜噜噜噜噜噜| 久久无码成人| 成人网站 免费观看| 日韩二级| 黑人精品欧美一区二区蜜桃| 久久久久亚洲Av无码专区老牛影视 | 啊啊啊啊啊啊在线观看| 成人av影院在线观看| 一区二区三区欧美激情| 手机不卡视频不卡在线一二三区| 国产精品粉嫩福利在线| av影片在线观看不卡| 亚洲 一区二区 自拍| 日韩AV电影网站| 九九免费影片| 人妻偷拍一区二区三区| 九九色热| 色综合20p| 欧美激情性久久久久久| 五月天色五月| 亭亭在线资源| 富女玩鸭子一级毛片| 五月综合婷婷久久网站| 校园春色欧美色图| 天天天干977| 日韩A优精品在线观看| 96AV精品| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 天堂中文日本在线观看| 青青草视频爽一爽| 九t超碰| 国产精品免费视频人成| 丁香婷婷激情五月天无毒不卡| 天啪| 熟女乱伦二区| 蜜臀th| 无码人妻一区二区三区色欲aⅴ | 久久偷偷色综合蜜桃| 激情小说图片亚洲首页| 国产男人又猛又粗又爽| 色老牛| 成人五级久久| 欧美亚男人的天堂| 亚洲在线91| AV 少妇 人妻 偷拍| 美日韩一二三区| 国产精品免费1区2区视频| 国产av白丝| 97碰久久| 六九九九| 天天综合亚洲综合| 欧美日韩高潮喷水91| 黄页网站成人免费| 毛片电影一区二区三区| 超碰欧美97资源| 91操人| 青青草国产一区二区三区| 亚洲色图日韩精品| 欧美偷偷网| 欧美v亚洲v日韩v最新在线二区| 久久精品国产97欧美精品亚洲| 91精品啪在线观看国产城中村| 天美传媒AV国产在线| 久久久久久69国产一区二区| 天天看特黄的免费网站| AV和黑人在线播放| 欧美韩国你懂得在线 | 少妇久久久久久| 精品人妻1237| 91av熟女人妻| 青青草日韩免费观看高清在线| 东京热男人的天堂精品| 国产AV线| 久久99综合| 日韩一二三区| 亚洲欧美天堂在线| 国产极品999| 色欧美亚洲| 亚洲瓯美色图| 欧美性生活免费网| 一区二区不卡| 思思热在线cao| 九九九九免费视频| 色婷婷久久| 试看60秒 爽| 2000亚洲男人天堂| 亚洲精品影视老司机| 91精品婷婷国产综合久久| 狠狠干,狠狠操| 亚洲欧美日韩免费观看| 性色av一区二区| 国产精品免费美女视频| 天美传媒av一区二区| 色色色999| 乱性AV| 九一性生活免费视频| 91|九色|国产熟女| 婷婷超| 操逼无毒无码免费视频| av九九| 青青免费在线视频一区| 蜜臀久久精品久久久久视频| 精品久久一区二区三区四区五区| 成人无码在线超碰网| 91老熟女老女人国产老太| 色色激情| 国产精品亚洲无码| 天天躁日日躁狠狠狠躁| 操人妻逼91| 久久99久久99精品免视看婷婷| 综合伊人激情| 人妻精品一区一区三区蜜桃91| 67914亚洲精品| 性爱乱伦网址| 国产在线能看的你懂的| 日韩在线人妻网站| 国产精品青草综合久久| 岛国片在线播放| 欧美人妻制服| 欧美激情亚洲情色| 日韩天堂av电影在线观看| 一区三区啪啪| 69一区二区| 欧美色日| 操人妻逼91| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 国产高清自拍视频| 啊啊啊啊,啊啊好多水| 亚洲一区二区三区麻豆传媒| 伊人久久婷婷| 午夜福利在线合集| 新亚洲无码| 午夜传煤十二区精品| 成人久久精品| 色盈盈影院| 秋霞曰韩R级| 亚洲精品亚洲人成在线麻豆| 秋霞成人做爱| 日本成a人v网站在线观看| 国内毛片四区| 97超碰超欧美。| 欧美色图私拍91| 欧美激情总合网| 久久思思热| 色色五月丁香| 91日韩在线| 岛国黄色大片网站| 国产白嫩漂亮KTV在线| 日韩在线欧美精品一区二区| 欧美在线播放| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 国产女人高潮嗷嗷嗷叫小说| 日韩性爱一级片| 久草成人| 青青草国产欧美非洲黑人| 日韩欧美中文字幕搭讪巨乳美人妻视频| 60秒免费视频| 大香蕉色欲AV| 超碰久久网| 91日日夜夜| 日韩欧美天堂| 欧美青青视频| 久久女女| 亚洲黄色电影| 96久久久久久久| 高清无码人妻久久久一区二区三区aⅴ| 在线啊啊啊| 国产一二三福利视频网| 少妇色欲综合网2| 99热这里都是精品| 欧美激情精品| 99热这里都是精品| 亚洲97| 三男一女不戴套的A片| 91视频精品| 欧美日韩大黄片| 天天艹天天日| 日韩av在线播放不卡| 国产精品青草综合久久| 五月丁香久久| 超碰性爱97| 偷拍欧美激情| 91无码人妻| 亚91网| 久久久久亚洲Av无码专区老牛影视| 日本孕妇一区二区视频操逼免费看 | 人人操人人摸人人看人人插| 蜜乳Av成人片网站| 国产真实野战在线视频| 簧片免费看视频| 欧美精品1区2区3区| 欧美日韩性爱无码| 六月激情网| 欧美少妇第一页| WWW美腿丝袜香蕉中文| 亚洲欧美清纯| 久久精品国产亚洲妲己影视| 综合免费无码中文| 99热这里只有精品9| 天天干天天拍| 成人五月天色网| 伊人久大| 国产一区二区三区高清视频| 在线欧美69V免费观看视频| 九九性爱网| 国产suv精品一区二区四区999| 色眯眯av| 日韩一级二级三级免费看完整版 | 亚洲日韩欧美一区二区| 不卡视频一区蜜桃视频 | 操逼片国产| 最新欧洲欧美日本激情网站| 欧美毛片在线网| 欧美伦乱爱| 亚洲有码视频二区| 永久免费发布性爱网| 亚洲色图久久成人| 丝袜狂射91| 国产成人亚洲精品无| 亚洲 国产 精品一区| 久久9久9久99久9久9| 蜜臀99久| 久久久久国产一区二| 天堂资源欧美| 91欧美色| 亚洲 欧美 手机在线观看| 人妻天天爽夜夜爽精品2| 精品高清牛人盗摄一区二区三区中文字幕A片免费在线观看 | 亚洲性图91| 国产午夜精品理论片a大结局| 综合自拍| 日韩 欧美 国产 麻豆| 日本孕妇一区二区视频操逼免费看 | 久久久国产av美女私房| 亚洲激情四射| 激情情色五月天| 色操逼网| 伊人成人情色综合| 欧美色图亚洲色| 精品国产精品一区二区| #NAME?| 亚洲精品尤物yw在线影院| oumeisetu综合| 超碰久超碰久| 欧美视频一区二区在线| 五月开心久久AV官网| A级片日韩欧美国产欧美视频精选观看| 国产成人+综合亚洲+天堂| 亚洲高清在线se| 中文字幕一区二区三区高清| 性欧美体内射精| 久久久久久九九九| 超碰99在线观看| 亚洲欧美国产精品久久久久久久| 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 先锋色眉乱伦资源| 99re69| 久久精品人人做人人看| 67194无码不卡| 淫荡网址| 你操综合| AAAA级日本片免费视频| 91女在线观看| 亚洲欧美骚| 操我啊啊啊啊啊| 久久久久久网址| 午夜天堂精品久久| 91性高朝久久久久久久久| 久草婷婷| 一区二区三区探花在线观看| 欧美国产有色电影| 2019天天干天天操| 亚洲啪啪啪啪视香蕉| 国产一区二区三三视频| 骚货 中文字幕 av| 在线观看av区| 78精品在线| 日本三级久| 日本黄色精品专区网站| 日日夜夜青青草母狗| 国产日逼视频| 天天干1区2区在线| 亚洲最新中文字幕免费| www. 男人天堂成人在线| www.国产高潮精品| 台湾佬大香蕉| 麻豆黄色五月天| 福利社区午夜一区二区| 麻豆区久久久久亚| 丁香婷婷久久| 日韩兔费看黄片| 少妇蜜汁| 欧美网站免费| 日本不卡五区| 农村妇女精品一区二区| 午夜理论片在线观看免费| 男人天堂毛片| 日韩紧密久久| 欧美日韩性爱无码| 青青青青青手机视频| 99这里有精品| 青椒国产97在线熟女| 久久蜜桃一区二区| 亚州成人A√| a级成人毛片免费视频高清| 国产日韩怡红院| 激情文学 国产一二三aV| 操逼啊啊啊91| 东京热天堂网| 91路www| 日韩偷拍色图| 亚洲AV无码AV吞精久久久久| 亚洲中文字幕av| 丝袜综合| 人妻激情偷乱视频一区二区三区 | 99rre在线精品99re8| 天天干少妇| 高潮的A片激情扒开一区| 久久精品国产97欧美精品亚洲| 91n美女视频| 亚洲一区二区精品福利| 久久久啊啊啊| 国产地址二三| 我爱大香蕉| 26uuu性| 男人的天堂VA| 欧美在线中M| 欧美日韩免费专区在线| 亚洲精品成人| 精品欧美А∨无码黑人大荫蒂 | 亚洲综合一区二区| 国产黄色视频久久| 欧美综合1性辶| 欧美精品系列| 中文字幕在线2| 97免费在线| 黄久久| 激情欧美日韩女同久久| 天天日天天插| 亚洲高清无码AAA久久久精品| 日韩无限资源| 风间由美日韩欧美久久| 涩涩久久精品| 国产熟女一区二区丰满| 亚洲日韩肥臀视频在线观看| 免费看日产一区二区三区| 吖在线不卡一区二区国产剧情| 91天天综合网| 日日摸日日碰夜夜爽视频| 风月影院男女十八禁| 91草草草| 超碰碰97| 丁香五月久久| 人妻AV 中文字幕的| 日韩啪啪视频| 92人人操人人| 日逼国产| 国产三级日产三级韩国三级| 国产日逼视频| 午夜福利无毒不卡| 20cm女自慰在线日韩欧美| 亚洲欧美首页| 亚洲丝袜诱惑| 啊啊啊啊网站| 亚洲一二三四区|