亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Android > 正文

Flutter實(shí)現(xiàn)頁面切換后保持原頁面狀態(tài)的3種方法

2019-10-21 21:19:24
字體:
供稿:網(wǎng)友

前言:

在Flutter應(yīng)用中,導(dǎo)航欄切換頁面后默認(rèn)情況下會(huì)丟失原頁面狀態(tài),即每次進(jìn)入頁面時(shí)都會(huì)重新初始化狀態(tài),如果在initState中打印日志,會(huì)發(fā)現(xiàn)每次進(jìn)入時(shí)都會(huì)輸出,顯然這樣增加了額外的開銷,并且?guī)砹瞬缓玫挠脩趔w驗(yàn)。
在正文之前,先看一些常見的App導(dǎo)航,以喜馬拉雅FM為例:

Flutter,頁面切換,原頁面狀態(tài)

它擁有一個(gè)固定的底部導(dǎo)航以及首頁的頂部導(dǎo)航,可以看到不管是點(diǎn)擊底部導(dǎo)航切換頁面還是在首頁左右側(cè)滑切換頁面,之前的頁面狀態(tài)都是始終維持的,下面就具體介紹下如何在flutter中實(shí)現(xiàn)類似喜馬拉雅的導(dǎo)航效果

第一步:實(shí)現(xiàn)固定的底部導(dǎo)航

在通過flutter create生成的項(xiàng)目模板中,我們先簡化一下代碼,將MyHomePage提取到一個(gè)單獨(dú)的home.dart文件,并在Scaffold腳手架中添加bottomNavigationBar底部導(dǎo)航,在body中展示當(dāng)前選中的子頁面。

/// home.dartimport 'package:flutter/material.dart';import './pages/first_page.dart';import './pages/second_page.dart';import './pages/third_page.dart';class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State<MyHomePage> { final items = [ BottomNavigationBarItem(icon: Icon(Icons.home), title: Text('首頁')), BottomNavigationBarItem(icon: Icon(Icons.music_video), title: Text('聽')), BottomNavigationBarItem(icon: Icon(Icons.message), title: Text('消息')) ]; final bodyList = [FirstPage(), SecondPage(), ThirdPage()]; int currentIndex = 0; void onTap(int index) { setState(() { currentIndex = index; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(  title: Text('demo'), ), bottomNavigationBar: BottomNavigationBar(  items: items,  currentIndex: currentIndex,   onTap: onTap ), body: bodyList[currentIndex] ); }}

其中的三個(gè)子頁面結(jié)構(gòu)相同,均顯示一個(gè)計(jì)數(shù)器和一個(gè)加號(hào)按鈕,以first_page.dart為例:

/// first_page.dartimport 'package:flutter/material.dart';class FirstPage extends StatefulWidget { @override _FirstPageState createState() => _FirstPageState();}class _FirstPageState extends State<FirstPage> { int count = 0; void add() { setState(() { count++; }); } @override Widget build(BuildContext context) { return Scaffold( body: Center(  child: Text('First: $count', style: TextStyle(fontSize: 30)) ), floatingActionButton: FloatingActionButton(  onPressed: add,  child: Icon(Icons.add), ) ); }}

當(dāng)前效果如下:

Flutter,頁面切換,原頁面狀態(tài)

可以看到,從第二頁切換回第一頁時(shí),第一頁的狀態(tài)已經(jīng)丟失

第二步:實(shí)現(xiàn)底部導(dǎo)航切換時(shí)保持原頁面狀態(tài)

可能有些小伙伴在搜索后會(huì)開始直接使用官方推薦的AutomaticKeepAliveClientMixin,通過在子頁面的State類重寫wantKeepAlive為true 。 然而,如果你的代碼和我上面的類似,body中并沒有使用PageView或TabBarView,很不幸的告訴你,踩到坑了,這樣是無效的,原因后面再詳述。現(xiàn)在我們先來介紹另外兩種方式:

① 使用IndexedStack實(shí)現(xiàn)

IndexedStack繼承自Stack,它的作用是顯示第index個(gè)child,其它c(diǎn)hild在頁面上是不可見的,但所有child的狀態(tài)都被保持,所以這個(gè)Widget可以實(shí)現(xiàn)我們的需求,我們只需要將現(xiàn)在的body用IndexedStack包裹一層即可

/// home.dartclass _MyHomePageState extends State<MyHomePage> { ... ... ... @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(  title: Text('demo'), ), bottomNavigationBar: BottomNavigationBar(  items: items, currentIndex: currentIndex, onTap: onTap), // body: bodyList[currentIndex] body: IndexedStack(  index: currentIndex,  children: bodyList, )); }

保存后再次測試一下

Flutter,頁面切換,原頁面狀態(tài)

② 使用Offstage實(shí)現(xiàn)

Offstage的作用十分簡單,通過一個(gè)參數(shù)來控制child是否顯示,所以我們同樣可以組合使用Offstage來實(shí)現(xiàn)該需求,其實(shí)現(xiàn)原理與IndexedStack類似

/// home.dartclass _MyHomePageState extends State<MyHomePage> { ... ... ... @override Widget build(BuildContext context) { return Scaffold(  appBar: AppBar(   title: Text('demo'),  ),  bottomNavigationBar: BottomNavigationBar(   items: items, currentIndex: currentIndex, onTap: onTap),  // body: bodyList[currentIndex],  body: Stack(   children: [   Offstage(    offstage: currentIndex != 0,    child: bodyList[0],   ),   Offstage(    offstage: currentIndex != 1,    child: bodyList[1],   ),   Offstage(    offstage: currentIndex != 2,    child: bodyList[2],   ),   ],  )); }}

在上面的兩種方式中都可以實(shí)現(xiàn)保持原頁面狀態(tài)的需求,但這里有一些開銷上的問題,有經(jīng)驗(yàn)的小伙伴應(yīng)該能發(fā)現(xiàn)當(dāng)應(yīng)用第一次加載的時(shí)候,所有子頁狀態(tài)都被實(shí)例化了(>這里的細(xì)節(jié)并不是因?yàn)槲抑苯影炎禹搶?shí)例化放在bodyList里...<),如果在子頁State的initState中打印日志,可以在終端看到一次性輸出了所有子頁的日志。下面就介紹另一種通過繼承AutomaticKeepAliveClientMixin的方式來更好的實(shí)現(xiàn)保持狀態(tài)。

第三步:實(shí)現(xiàn)首頁的頂部導(dǎo)航

首先我們通過配合使用TabBar+TabBarView+AutomaticKeepAliveClientMixin來實(shí)現(xiàn)頂部導(dǎo)航(注意:TabBar和TabBarView需要提供controller,如果自己沒有定義,則必須使用DefaultTabController包裹)。此處也可以選擇使用PageView,后面會(huì)介紹。

我們先在home.dart文件移除Scaffold腳手架中的appBar頂部工具欄,然后開始重寫首頁first_page.dart:

/// first_page.dartimport 'package:flutter/material.dart';import './recommend_page.dart';import './vip_page.dart';import './novel_page.dart';import './live_page.dart';class _TabData { final Widget tab; final Widget body; _TabData({this.tab, this.body});}final _tabDataList = <_TabData>[ _TabData(tab: Text('推薦'), body: RecommendPage()), _TabData(tab: Text('VIP'), body: VipPage()), _TabData(tab: Text('小說'), body: NovelPage()), _TabData(tab: Text('直播'), body: LivePage())];class FirstPage extends StatefulWidget { @override _FirstPageState createState() => _FirstPageState();}class _FirstPageState extends State<FirstPage> { final tabBarList = _tabDataList.map((item) => item.tab).toList(); final tabBarViewList = _tabDataList.map((item) => item.body).toList(); @override Widget build(BuildContext context) { return DefaultTabController(  length: tabBarList.length,  child: Column(   children: <Widget>[   Container(    width: double.infinity,    height: 80,    padding: EdgeInsets.fromLTRB(20, 24, 0, 0),    alignment: Alignment.centerLeft,    color: Colors.black,    child: TabBar(     isScrollable: true,     indicatorColor: Colors.red,     indicatorSize: TabBarIndicatorSize.label,     unselectedLabelColor: Colors.white,     unselectedLabelStyle: TextStyle(fontSize: 18),     labelColor: Colors.red,     labelStyle: TextStyle(fontSize: 20),     tabs: tabBarList),   ),   Expanded(    child: TabBarView(    children: tabBarViewList,    // physics: NeverScrollableScrollPhysics(), // 禁止滑動(dòng)   ))   ],  )); }}

其中推薦頁、VIP頁、小說頁、直播頁的結(jié)構(gòu)仍和之前的首頁結(jié)構(gòu)相同,僅顯示一個(gè)計(jì)數(shù)器和一個(gè)加號(hào)按鈕,以推薦頁recommend_page.dart為例:

/// recommend_page.dartimport 'package:flutter/material.dart';class RecommendPage extends StatefulWidget { @override _RecommendPageState createState() => _RecommendPageState();}class _RecommendPageState extends State<RecommendPage> { int count = 0; void add() { setState(() {  count++; }); }  @override void initState() { super.initState(); print('recommend initState'); } @override Widget build(BuildContext context) { return Scaffold(  body:Center(   child: Text('首頁推薦: $count', style: TextStyle(fontSize: 30))  ),  floatingActionButton: FloatingActionButton(   onPressed: add,   child: Icon(Icons.add),  )); }}

保存后測試,

Flutter,頁面切換,原頁面狀態(tài)

可以看到,現(xiàn)在添加了首頁頂部導(dǎo)航,且默認(rèn)支持左右側(cè)滑,接下來再進(jìn)一步的完善狀態(tài)保持

第四步:實(shí)現(xiàn)首頁頂部導(dǎo)航切換時(shí)保持原頁面狀態(tài)

③ 使用AutomaticKeepAliveClientMixin實(shí)現(xiàn)

寫到這里已經(jīng)很簡單了,我們只需要在首頁導(dǎo)航內(nèi)需要保持頁面狀態(tài)的子頁State中,繼承AutomaticKeepAliveClientMixin并重寫wantKeepAlive為true即可。

notes:Subclasses must implement wantKeepAlive, and their build methods must call super.build (the return value will always return null, and should be ignored)

以首頁推薦recommend_page.dart為例:

/// recommend_page.dartimport 'package:flutter/material.dart';class RecommendPage extends StatefulWidget { @override _RecommendPageState createState() => _RecommendPageState();}class _RecommendPageState extends State<RecommendPage> with AutomaticKeepAliveClientMixin { int count = 0; void add() { setState(() {  count++; }); } @override bool get wantKeepAlive => true; @override void initState() { super.initState(); print('recommend initState'); } @override Widget build(BuildContext context) { super.build(context); return Scaffold(  body:Center(   child: Text('首頁推薦: $count', style: TextStyle(fontSize: 30))  ),  floatingActionButton: FloatingActionButton(   onPressed: add,   child: Icon(Icons.add),  )); }}

再次保存測試,

Flutter,頁面切換,原頁面狀態(tài)

現(xiàn)在已經(jīng)可以看到,不管是切換底部導(dǎo)航還是切換首頁頂部導(dǎo)航,所有的頁面狀態(tài)都可以被保持,并且在應(yīng)用第一次加載時(shí),終端只看到recommend initState的日志,第一次切換首頁頂部導(dǎo)航至vip頁面時(shí),終端輸出vip initState,當(dāng)再次返回推薦頁時(shí),不再輸出recommend initState。

所以,使用TabBarView+AutomaticKeepAliveClientMixin這種方式既實(shí)現(xiàn)了頁面狀態(tài)的保持,又具有類似惰性求值的功能,對(duì)于未使用的頁面狀態(tài)不會(huì)進(jìn)行實(shí)例化,減小了應(yīng)用初始化時(shí)的開銷。

更新

前面在底部導(dǎo)航介紹了使用IndexedStack和Offstage兩種方式實(shí)現(xiàn)保持頁面狀態(tài),但它們的缺點(diǎn)在于第一次加載時(shí)便實(shí)例化了所有的子頁面State。為了進(jìn)一步優(yōu)化,下面我們使用PageView+AutomaticKeepAliveClientMixin重寫之前的底部導(dǎo)航,其中PageView和TabBarView的實(shí)現(xiàn)原理類似,具體選擇哪一個(gè)并沒有強(qiáng)制要求。更新后的home.dart文件如下:

/// home.dartimport 'package:flutter/material.dart';import './pages/first_page.dart';import './pages/second_page.dart';import './pages/third_page.dart';class MyHomePage extends StatefulWidget { @override _MyHomePageState createState() => _MyHomePageState();}class _MyHomePageState extends State<MyHomePage> { final items = [ BottomNavigationBarItem(icon: Icon(Icons.home), title: Text('首頁')), BottomNavigationBarItem(icon: Icon(Icons.music_video), title: Text('聽')), BottomNavigationBarItem(icon: Icon(Icons.message), title: Text('消息')) ]; final bodyList = [FirstPage(), SecondPage(), ThirdPage()]; final pageController = PageController(); int currentIndex = 0; void onTap(int index) { pageController.jumpToPage(index); } void onPageChanged(int index) { setState(() {  currentIndex = index; }); } @override Widget build(BuildContext context) { return Scaffold(  bottomNavigationBar: BottomNavigationBar(   items: items, currentIndex: currentIndex, onTap: onTap),  // body: bodyList[currentIndex],  body: PageView(   controller: pageController,   onPageChanged: onPageChanged,   children: bodyList,   physics: NeverScrollableScrollPhysics(), // 禁止滑動(dòng)  )); }}

然后在bodyList的子頁State中繼承AutomaticKeepAliveClientMixin并重寫wantKeepAlive,以second_page.dart為例:

/// second_page.dartimport 'package:flutter/material.dart';class SecondPage extends StatefulWidget { @override _SecondPageState createState() => _SecondPageState();}class _SecondPageState extends State<SecondPage> with AutomaticKeepAliveClientMixin { int count = 0; void add() { setState(() {  count++; }); } @override bool get wantKeepAlive => true;  @override void initState() { super.initState(); print('second initState'); } @override Widget build(BuildContext context) { super.build(context); return Scaffold(  body: Center(   child: Text('Second: $count', style: TextStyle(fontSize: 30))  ),  floatingActionButton: FloatingActionButton(   onPressed: add,   child: Icon(Icons.add),  )); }}

Ok,更新后保存運(yùn)行,應(yīng)用第一次加載時(shí)不會(huì)輸出second initState,僅當(dāng)?shù)谝淮吸c(diǎn)擊底部導(dǎo)航切換至該頁時(shí),該子頁的State被實(shí)例化。

至此,如何實(shí)現(xiàn)一個(gè)類似的 底部 + 首頁頂部導(dǎo)航 完結(jié) ~

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VEVB武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到Android開發(fā)頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
中文字幕乱在线伦视频中文字幕乱码在线| 超碰成人97| 欧美日韩在线精品一区二区三区激情综合| 欧洲av无码放荡人妇网站| 婷婷五月综合久久中文字幕| 免费国产羞羞网站美图| 久久久www免费人成精品| 国产精品日韩精品欧美在线| 国产成人综合在线观看| 911av视频| 国产在线视频网| 亚洲精品一区中文字幕电影| 日韩新的三级电影| 国产精品永久免费观看| 日韩欧美一区二区三区久久| 成人情趣视频网站| 一本久道久久综合无码中文| 久久久久性色av无码一区二区| 国产精品无码99re| 色偷偷综合社区| 伦理av在线| 国产免费观看高清视频| 2018av男人天堂| 性中国古装videossex| 欧美日韩专区| 欧美高清在线精品一区| 精品不卡视频| 91影院成人| 免费网站黄在线观看| 欧美在线免费看视频| 久久久久久影院| 小小的日本在线观看免费色网| 91麻豆文化传媒在线观看| 国产情侣免费视频| 亚洲bbw性色大片| 一区二区亚洲| 国产精品18久久久久久麻辣| 欧美极品一区二区三区| 亚洲黄色尤物视频| 成人免费视频77777| 国产精品原创视频| 国产av无码专区亚洲av毛网站| 中文字幕欧美国内| 菠萝蜜视频在线观看www入口| 欧美成人精品一区二区免费看片| 欧美三级午夜理伦三级在线观看| 麻豆精品视频在线| 性一交一乱一透一a级| 青青草免费观看免费视频在线| 偷拍日韩校园综合在线| 日韩成人综合| 少妇高潮av久久久久久| 在线免费观看黄色小视频| 日韩免费观看一区二区| 欧美精品videosex牲欧美| 亚洲精品在线国产| 四季av中文字幕| 日韩午夜精品电影| 国产成人在线视频网址| 91精品视频一区二区| 日韩一卡二卡在线观看| 午夜久久av| 久久久久久黄色| 国产成人毛片| 欧美日韩在线一二三| 天天综合色天天综合色hd| 国产乡下妇女做爰视频| 国产精品夜夜夜一区二区三区尤| 99国产精品久久久久久久成人热| 欧美精品免费观看二区| 色综合色综合色综合| 国产福利精品一区二区| 欧美精品性视频| 久久99精品久久久久久野外| 99久久99九九99九九九| 国产三级av片| 色婷婷视频在线观看| 久久av在线看| 在线视频精品一| 亚洲精品aaaa| 91日韩在线专区| 黄色在线免费观看网站| 在线观看国产精品91| 欧美成人日本| 欧美两根一起进3p做受视频| 日韩经典中文字幕在线观看| 一级黄色免费网站| 中文字幕精品一区久久久久| 激情亚洲另类图片区小说区| 日韩欧美视频一区| 欧美一级专区| 中文字幕无码毛片免费看| 国产精华一区| 亚洲色图21p| 九九九九九九精品| 亚洲成熟丰满熟妇高潮xxxxx| 国产精品久久久久久亚洲毛片| 午夜不卡av免费| 探花视频在线观看| 九九热视频精品在线观看| 久久综合九色欧美狠狠| 日韩黄色片在线| 激情五月少妇a| 99香蕉国产精品偷在线观看| 欧美国产精品久久| 国产精品国产自产拍在线| 99re在线观看视频| 久久影院视频免费| 久久夜夜操妹子| 亚洲久草在线视频| 无码一区二区三区| 91在线porny国产在线看| 天天天天天天天操| 在线视频第一页| 男插女视频久久久| 欧美做a欧美| 国产福利一区二区三区在线播放| 欧美系列电影免费观看| 成人av综合网| 中文字幕综合在线观看| 国产91在线播放九色| 性欧美丰满熟妇xxxx性久久久| 亚洲开发第一视频在线播放| 欧美videossex| 色综合一本到久久亚洲91| 少妇人妻精品一区二区三区| 国产在线观看a| 国产精品av在线播放| 欧美激情精品久久久久久变态| 亚洲视频网站在线观看| 成人在线观看视频网站| 免费极品av一视觉盛宴| 国产中文字幕视频在线观看| 女人黄色片免费| 特种兵之深入敌后| 久久久精品在线视频| 国产欧美日产一区| 国产伦精品一区二区三区妓女| 久久久久久久中文| 欧美猛烈性xbxbxbxb| 亚洲精品乱码久久久久久9色| 2024最新电影免费在线观看| 日韩一区二区三区精品视频第3页| 奇米成人av国产一区二区三区| 欧美精品羞羞答答| 国产精品视频xxxx| 国产成人亚洲综合a∨婷婷图片| 精品福利一区| 男女性色大片免费观看一区二区| 三区精品视频| 国产美女扒开尿口久久久| 国产精品国产精品国产专区不卡| 国产成人av一区二区三区在线观看| 呦视频在线一区二区三区| 欧美大片aaa| 日韩三级在线免费观看| 6080yy精品一区二区三区| 国产又大又黄又粗的视频| 在线观看国产一区| 欧美激情奇米色| 欧美无人高清视频在线观看| 国产激情精品久久久第一区二区| 国产av人人夜夜澡人人爽| 粉嫩绯色av一区二区在线观看| 69av自拍偷拍| 国产一区二区在线播放| 亚洲人成网77777色在线播放| 野花国产精品入口| 日韩免费高清av| 亚洲色图在线视频| 日韩av电影天堂| 国产丝袜精品第一页| 中国一级特黄视频| 在线观看国产亚洲| 国产一级不卡毛片| 欧美videossex极品| 亚洲欧美日韩一区在线观看| 欧洲亚洲精品视频| 色综合伊人色综合网| 亚洲网址在线| 一区二区在线免费观看视频| 亚洲午夜未满十八勿入免费观看全集| 日韩在线观看一区二区三区| 中文字幕亚洲日本岛国片| 999精品在线观看| 亚洲国产一区二区在线播放| 理论视频在线| 亚洲福利在线观看| 欧美sm一区| 国产精品一区二区三区在线观| 91麻豆国产视频| 少妇欧美激情一区二区三区| 色综合手机在线| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 欧美性高跟鞋xxxxhd| 亚洲精品精品一区| 日本成人一区二区三区| 人妻丰满熟妇av无码久久洗澡| 在线观看欧美亚洲| 日本vs亚洲vs韩国一区三区二区| 国产69精品久久久久9999apgf| 夜夜操夜夜操| 欧美在线影院一区二区| 精品视频99| 日本韩国精品一区二区在线观看| 日本电影在线观看网站| 亚洲精品98久久久久久中文字幕| 欧美日韩视频在线| 日本a√在线观看| 少妇一级淫片免费看| 欧美一区二粉嫩精品国产一线天| 伊人色综合久久天天| 狠狠久久综合婷婷不卡| 麻豆一区二区三区四区精品蜜桃| 在线观看日韩一区二区| 66国产精品| 欧美男女性生活在线直播观看| 欧美男体视频| 欧美在线一区二区三区四| 久草在线免费福利资源| 天堂www中文在线资源| 国产一区久久| 国内av一区二区| 欧美成人伊人久久综合网| xvideos国产精品| 成人av免费网站| 国产有色视频色综合| 丁香婷婷久久久综合精品国产| 亚洲在线免费播放| 亚洲wwww| 第一福利永久视频精品| www.五月色.com| 亚洲欧美中文日韩v在线观看| 羞羞的视频网站| 国产精品久久久久久9999| 福利视频一区| 国产原创一区| 欧美日韩一本到| 国产娇喘精品一区二区三区图片| 久久久久亚洲精品中文字幕| 亚洲影院在线观看| 99久久精品无免国产免费| www.毛片.com| 在线观看国产91| 91蝌蚪|人| 色综合婷婷久久| 成人一对一视频| 国产成人午夜电影| 色网站在线视频| 久久亚洲图片| 高潮毛片在线观看| 中国字幕a在线看韩国电影| 国产亚洲精品拍拍拍拍拍| 国产视频播放| 中文字幕一区二区人妻电影丶| 国产精品嫩草av| 国产美女一区二区| 欧美日韩国产91| 在线国产视频| 国产偷国产偷亚洲高清人白洁| www国产亚洲精品久久麻豆| 成人情视频高清免费观看电影| 91成人在线播放| 中文字幕一区二区不卡| 日本黄色一区| 在线观看一级片| 欧美男男gaygay1069| 日本黄色免费网站| 欧美5-7sexvideos处| 欧美影视资讯| 亚洲最新永久观看在线| 欧美一区二区久久久| 在线播放国产精品| …久久精品99久久香蕉国产| 成全视频全集| 中文字幕免费在线观看视频| 一级做a爱片久久毛片| 国产一级片免费视频| 日韩美女在线看免费观看| 欧美日韩国产不卡| 伊人av电影| 国产激情在线观看| 91成人在线网站| 亚洲图片欧洲图片av| 久热国产在线| 久久天天久久| 日日骚欧美日韩| 亚洲亚洲一区二区三区| 国产亚洲一级| 99精品欧美一区二区三区| 综合激情婷婷| 久久香蕉国产线看观看网| 欧美国产一区二区在线| 久章草在线视频| 伦伦影院午夜日韩欧美限制| 国产成+人+日韩+欧美+亚洲| a天堂中文在线官网| 国产三级电影在线播放| 精品久久久久久无码国产| 成人福利电影| 一二三不卡视频| 菠萝蜜视频在线观看www入口| 国产精品成人播放| 亚洲美女福利视频| h网址在线观看| 免费看黄色a级片| www.亚洲高清| 天堂精品一区二区三区| 男人的天堂视频在线| 天堂久久久久久| 日韩一区二区福利| 五月久久久综合一区二区小说| 日韩经典中文字幕一区| 视频二区不卡| 深夜福利国产精品| 成人在线高清视频| 这里视频有精品| 国产一区二区三区高清视频| 你懂的国产精品永久在线| 日日摸夜夜添夜夜添亚洲女人| 欧美人xxxxx| zzjj国产精品一区二区| 国产女主播喷水视频在线观看| 91网站观看| 久久66热偷产精品| 92精品国产成人观看免费| 国产aⅴ2021| 日韩不卡在线视频|