国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

第二十八回:如何給PageView添加指示器

這篇具有很好參考價(jià)值的文章主要介紹了第二十八回:如何給PageView添加指示器。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


我們?cè)谇懊嬲禄刂薪榻B了PageView這個(gè)Widget,本章回中將介紹 如何給PageView添加指示器.閑話休提,讓我們一起Talk Flutter吧。

概念介紹

我們?cè)谶@里說(shuō)的指示器表示PageView底部的小圓圈,它用來(lái)指示當(dāng)前哪個(gè)頁(yè)面被選中。常用的場(chǎng)景是滑動(dòng)頁(yè)面時(shí)小圓圈高亮顯示當(dāng)前被選中的頁(yè)面,其它小圓圈顯示為暗色,表示其它頁(yè)面沒(méi)有被選中。本章回中將詳細(xì)介紹如何給PageView添加這種小圓圈。

添加方法

  1. 指示器為小圓圈,使用Material的圓形實(shí)現(xiàn),這里不理解不要緊,看代碼就能明白;
  2. 創(chuàng)建n個(gè)指示器(這里的n是PageView中Page的數(shù)量),并且使用Row容器把它們排列中一行;
  3. 使用Column當(dāng)作外層容器,第一行存放PageView,第二行存放排在一行的小圓圈,它們就是PageView的指示器;

示例代碼

//創(chuàng)建小圓圈指示器:代碼中的r表示小圓圈的半徑,s表示小圓圈之間的間隔,它們的值通過(guò)參數(shù)傳入
  Widget _Indicator(int index, int pageCount, double r, double s) {
    
    //通過(guò)pageController中的索引值來(lái)判斷當(dāng)前頁(yè)面是否被選中
    bool isIndexPageSelected = (index ==
        (pageController.page != null ? pageController.page?.round() : 0));

    //通過(guò)參數(shù)傳遞的索引值來(lái)判斷當(dāng)前頁(yè)面是否被選中
    // bool isIndexPageSelected = (index == currentIndex) ? true : false;
    //打印索引值,調(diào)試使用
    // print("page count ${pageController.page?.round()}");
    // print("current : ${currentIndex}");

    return Container(
      //寬度是圓的半徑,寬度是半徑+左右兩邊的間隔(space)
      height: r,
      width: r + 2 * s,
      child: Material(
        color: isIndexPageSelected ? Colors.greenAccent : Colors.grey,
        type: MaterialType.circle,
        child: Container(
          width: r,
          height: r,
        ),
      ),
    );
  }

//把三個(gè)小圓圈組成一行
  
  Widget build(BuildContext context) {
    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        _Indicator(0, 3, 20, 18),
        _Indicator(1, 3, 20, 18),
        _Indicator(2, 3, 20, 18),
      ],
    );
  }
}
//使用Column當(dāng)作外層容器,第一行存放PageView,第二行存放排在一行的小圓圈,它們就是PageView的指示器;
return Scaffold(
  appBar: AppBar(
    title: const Text("Example of PaveView"),
    backgroundColor: Colors.purpleAccent,
  ),
  body: Column(
    mainAxisAlignment: MainAxisAlignment.spaceAround,
    children: [
      Container(
        width: double.infinity,
        height: 500,
        child: PageView(), //PageView詳細(xì)的內(nèi)容省略不寫(xiě)
      ),
      Indicator(
        pageController: mPageController,
        count: 3,
        currentIndex: pageIndex,
      )
    ],
  ),
);

上面的代碼中只列出了核心代碼,完整的代碼可以查看Github上ex015中的內(nèi)容。編譯并且運(yùn)行上面的代碼可以得到一個(gè)顯示三個(gè)Page的頁(yè)面,每個(gè)Page對(duì)應(yīng)一個(gè)小圓圈指示器,滑動(dòng)Page時(shí)小圓圈的顏色跟著變化。我在這里就不演示程序運(yùn)行結(jié)果了,建議大家自己動(dòng)手去實(shí)踐。

指示器聯(lián)動(dòng)

代碼中還有一部分內(nèi)容大家可能看不明白,一個(gè)是pageController,另外一個(gè)是小圓圈的顏色設(shè)置。它們兩結(jié)合起來(lái)可以讓小圓圈與page聯(lián)動(dòng),什么是聯(lián)動(dòng)?就是Page滑動(dòng)到哪一頁(yè),與該頁(yè)對(duì)應(yīng)的小圓圈高亮顯示,其它頁(yè)的小圓圈顯示為暗色,這樣就可以通過(guò)小圓圈來(lái)指示出當(dāng)前被選中的頁(yè)面,這也是我們叫它指示器的原因。

聯(lián)動(dòng)的原理:通過(guò)pageController獲取當(dāng)前被選中頁(yè)的索引值,把該值與參數(shù)中傳入的索引值index進(jìn)行比較,如果它們相同說(shuō)明當(dāng)前頁(yè)被選中了,反之則說(shuō)明當(dāng)前頁(yè)沒(méi)有被選中。對(duì)于被選中的指示器,我們把它的顏色設(shè)置為高亮色,沒(méi)有被選中的指示器,我們把它的顏色設(shè)置為暗色或者叫淺色。

該原理中核心的內(nèi)容是獲取當(dāng)前被選中頁(yè)的索引值,除了使用pageController外還有一種方法:在代碼中定義一個(gè)變量用來(lái)存放被選中頁(yè)的索引值(代碼中為currentIndex變量),然后在PageViewonPageChanged()方法中通過(guò)setState()方法修改索引值,最后通過(guò)指示器的參數(shù)傳遞給指示器。這部分內(nèi)容對(duì)應(yīng)的代碼被注釋起來(lái)了,大家可以打開(kāi)注釋后再編譯程序,從程序運(yùn)行效果中可以看到這種方法也可以實(shí)現(xiàn)指示器聯(lián)動(dòng)效果。

看官們,關(guān)于"如何給PageView添加指示器"相關(guān)的內(nèi)容就介紹到這里,歡迎大家在評(píng)論區(qū)交流與討論!文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-441977.html

到了這里,關(guān)于第二十八回:如何給PageView添加指示器的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 藍(lán)橋杯31天真題沖刺|題解報(bào)告|第二十八天

    大家好,我是snippet,今天是我們刷題的第二十八天,距離我們刷題活動(dòng)結(jié)束也就只有幾天了,最近刷題有點(diǎn)迷茫了,下面是我今天的題解 目錄 一、路標(biāo)設(shè)置 題目鏈接:P3853 [TJOI2007]路標(biāo)設(shè)置 - 洛谷 | 計(jì)算機(jī)科學(xué)教育新生態(tài) (luogu.com.cn) 題目?jī)?nèi)容: 解題思路: 代碼: 題目鏈接

    2023年04月08日
    瀏覽(30)
  • 《微服務(wù)實(shí)戰(zhàn)》 第二十八章 分布式鎖框架-Redisson

    《微服務(wù)實(shí)戰(zhàn)》 第二十八章 分布式鎖框架-Redisson

    第二十八章 分布式鎖框架-Redisson 第二十七章 CAS 第二十六章 Java鎖的分類(lèi) 第二十五章 Java多線程安全與鎖 第二章 CountDownLatch和Semaphone的應(yīng)用 第一章 Java線程池技術(shù)應(yīng)用 Redisson 在基于 NIO 的 Netty 框架上,充分的利?了 Redis 鍵值數(shù)據(jù)庫(kù)提供的?系列優(yōu)勢(shì),在Java 實(shí)??具包中常

    2024年02月10日
    瀏覽(22)
  • 從0開(kāi)始學(xué)C++ 第二十八課 數(shù)據(jù)結(jié)構(gòu)深入 - 棧和隊(duì)列

    第二十八課:數(shù)據(jù)結(jié)構(gòu)深入 - 棧和隊(duì)列 學(xué)習(xí)目標(biāo): 理解棧(Stack)的基本概念和特性。 掌握隊(duì)列(Queue)的基本概念和特性。 學(xué)會(huì)在C++中使用棧和隊(duì)列。 了解棧和隊(duì)列的典型應(yīng)用場(chǎng)景。 學(xué)習(xí)內(nèi)容: 棧(Stack) 概念:棧是一種后進(jìn)先出(LIFO, Last In First Out)的數(shù)據(jù)結(jié)構(gòu),元素

    2024年01月23日
    瀏覽(18)
  • UNIX網(wǎng)絡(luò)編程卷一 學(xué)習(xí)筆記 第二十八章 原始套接字

    UNIX網(wǎng)絡(luò)編程卷一 學(xué)習(xí)筆記 第二十八章 原始套接字

    原始套接字提供普通的TCP和UDP套接字不具備的以下3個(gè)能力: 1.有了原始套接字,進(jìn)程可以讀寫(xiě)ICMPv4、IGMPv4、ICMPv6等分組。例如,ping程序就使用原始套接字發(fā)送ICMP回射請(qǐng)求并接收ICMP回射應(yīng)答。多播路由守護(hù)程序mrouted也使用原始套接字發(fā)送和接收IGMPv4分組。 這個(gè)能力還使得使

    2024年02月11日
    瀏覽(26)
  • 【送書(shū)福利-第二十八期】《AIGC:讓生成式AI成為自己的外腦》

    【送書(shū)福利-第二十八期】《AIGC:讓生成式AI成為自己的外腦》

    ?? 作者介紹:我是程序員洲洲,一個(gè)熱愛(ài)寫(xiě)作的非著名程序員。CSDN全棧優(yōu)質(zhì)領(lǐng)域創(chuàng)作者、華為云博客社區(qū)云享專(zhuān)家、阿里云博客社區(qū)專(zhuān)家博主、前后端開(kāi)發(fā)、人工智能研究生。公粽號(hào):程序員洲洲。 ?? 本文專(zhuān)欄:本文收錄于洲洲的《送書(shū)福利》系列專(zhuān)欄,該專(zhuān)欄福利多多

    2024年02月05日
    瀏覽(25)
  • 學(xué)C的第二十八天【字符串函數(shù)和內(nèi)存函數(shù)的介紹(一)】

    學(xué)C的第二十八天【字符串函數(shù)和內(nèi)存函數(shù)的介紹(一)】

    ========================================================================= 相關(guān)代碼gitee自取 :C語(yǔ)言學(xué)習(xí)日記: 加油努力 (gitee.com) ?========================================================================= 接上期 : 學(xué)C的第二十七天【指針的進(jìn)階(三)】_高高的胖子的博客-CSDN博客 ?================================

    2024年02月16日
    瀏覽(24)
  • 【送書(shū)福利-第二十八期】《從概念到現(xiàn)實(shí):ChatGPT和Midjourney的設(shè)計(jì)之旅》

    【送書(shū)福利-第二十八期】《從概念到現(xiàn)實(shí):ChatGPT和Midjourney的設(shè)計(jì)之旅》

    ?? 作者介紹:我是程序員洲洲,一個(gè)熱愛(ài)寫(xiě)作的非著名程序員。CSDN全棧優(yōu)質(zhì)領(lǐng)域創(chuàng)作者、華為云博客社區(qū)云享專(zhuān)家、阿里云博客社區(qū)專(zhuān)家博主、前后端開(kāi)發(fā)、人工智能研究生。公粽號(hào):程序員洲洲。 ?? 本文專(zhuān)欄:本文收錄于洲洲的《送書(shū)福利》系列專(zhuān)欄,該專(zhuān)欄福利多多

    2024年02月05日
    瀏覽(29)
  • 孩子都能學(xué)會(huì)的FPGA:第二十八課——用FPGA實(shí)現(xiàn)最近最少使用(LRU)算法

    孩子都能學(xué)會(huì)的FPGA:第二十八課——用FPGA實(shí)現(xiàn)最近最少使用(LRU)算法

    (原創(chuàng)聲明:該文是 作者的原創(chuàng) ,面向?qū)ο笫?FPGA入門(mén)者 ,后續(xù)會(huì)有進(jìn)階的高級(jí)教程。宗旨是 讓每個(gè)想做FPGA的人輕松入門(mén) , 作者不光讓大家知其然,還要讓大家知其所以然 !每個(gè)工程作者都搭建了全自動(dòng)化的仿真環(huán)境,只需要雙擊 top_tb.bat 文件就可以完成整個(gè)的仿真(前

    2024年02月19日
    瀏覽(30)
  • JavaScript從入門(mén)到精通系列第二十八篇:詳解JavaScript中的字符串的方法

    JavaScript從入門(mén)到精通系列第二十八篇:詳解JavaScript中的字符串的方法

    ? 文章目錄 前言 一:String中的方法 1:獲取字符串的長(zhǎng)度 2:返回指定位置的字符 3:返回指定位置的字符Unicode編碼 4:返回指定位置的字符Unicode編碼 ?二:比較常用的 1:連接兩個(gè)字符串 2:檢索一個(gè)字符串中指定內(nèi)容? 3:從后檢索一個(gè)字符串中指定內(nèi)容? ?4:截取字符串

    2024年02月06日
    瀏覽(26)
  • 一起Talk Android吧(第五百三十八回:RxJava中的線程切換)

    各位看官們大家好,上一回中咱們說(shuō)的例子是\\\"RxJava中的多線程操作\\\",本章回中介紹的例子是\\\"R xJava中的線程切換 \\\"。閑話休提,言歸正轉(zhuǎn),讓我們一起Talk Android吧! 我們?cè)谏弦徽禄刂薪榻B了如何創(chuàng)建多線程,本章回將介紹如何進(jìn)行線程切換。線程切換是指在主線程和子線程之

    2023年04月08日
    瀏覽(17)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包