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

第九十七回 自定義評分條

這篇具有很好參考價值的文章主要介紹了第九十七回 自定義評分條。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


我們在上一章回中介紹了"網(wǎng)絡綜合示例"相關的內容,本章回中將介紹如何 自定義評分條.閑話休提,讓我們一起Talk Flutter吧。

概念介紹

我們在本章回中介紹的評分條就是包含多個星星形狀的評分條,常見于網(wǎng)上購物后的評價中,相信大家都見過。Flutter沒有提供這樣的組件,因此我們準備自己實現(xiàn)一個這樣的組件,本章回中將詳細介紹如何去實現(xiàn)該組件。

實現(xiàn)方法

  1. 創(chuàng)建一個星星的Icon,在Icon中設置Icon的大小和顏色;
  2. 把多個Icon放到Row中,形成一排星星Icon,用來表示評價總分值;
  3. 創(chuàng)建一個和步驟2中相同的星星Icon,只是顏色不同,用來表示評價實際的分值;
  4. 使用Stack組件把步驟2和步驟3中創(chuàng)建星星Icon疊加在一起,組成一個整體的評分條;

該方法的整體思路就是使用Stack疊加兩行形狀相同圖標,圖標的顏色不同,進而實現(xiàn)顯示評分值和未評分值的效果。接下來我們通過具體的代碼來演示該方法。

示例代碼

List<Widget> ratingStar() {
  ///用來存放已經(jīng)評分的star,不過需要計算
  List<Widget> allStars = [];
  ///使用參數(shù)中傳入的圖標,如果沒有傳入使用默認的star圖標
  var star = Icon(widget.ratingedWidget.icon,
      color: widget.ratingedColor,
      size: widget.sizeOfStar,
  );


  ///計算單個star占用的分數(shù)
  double ratingPerStar = widget.maxRating / widget.countOfStar;
  ///計算star的數(shù)量,分整個star和部分star,整個star的數(shù)量=當前評分/單個star的分數(shù),向下取整
  int fullStarCount = (widget.rating/ratingPerStar).floor();
  ///如果整個star的數(shù)量超過評分條中圖標的最大數(shù)量,那么將它設置為最大值
  if(fullStarCount > widget.countOfStar) {
    fullStarCount = widget.countOfStar;
  }

  double percentStarCount = (widget.rating/ratingPerStar)-fullStarCount;
  // print("per: $ratingPerStar, full: $fullStarCount , part: $percentStarCount");

  ///把整數(shù)個star放入數(shù)組
  for(var i =0; i <fullStarCount;i++) {
    allStars.add(star);
  }

  var percentStar = ClipRect(
    clipper: DIYCliper(percent: percentStarCount),
    child: star,
  );
  allStars.add(percentStar);

  return allStars;
}

List<Widget> unRatingStar() {
  return List.generate(widget.countOfStar, (index) {

    ///使用參數(shù)中傳入的圖標,如果沒有傳入使用默認的star圖標
    return Icon(
      widget.unRtingedWidget.icon,
      color: widget.unRatingedColor,
      size: widget.sizeOfStar,
    );
  });
}

Stack(children: [
  Row(
    mainAxisAlignment: MainAxisAlignment.start,
    crossAxisAlignment: CrossAxisAlignment.center,
    children: unRatingStar(),
  ),
  Row(
    mainAxisAlignment: MainAxisAlignment.start,
    crossAxisAlignment: CrossAxisAlignment.center,
    children: ratingStar(),
  )
]),

上面的代碼和實現(xiàn)的方法完全相同,同時還進行了擴展:可以自定義評分的顏色以及評分條中的圖標形狀,就是說可以把評分條中的星星換成其它的圖形。

代碼中有個細節(jié)在實現(xiàn)方法中沒有介紹,就是計算評分值,它的思路:使用當前用戶輸入的評分值除以總分值得到評分值,然后用該值除以每個星星代表的分值,這樣就得到了星形的的數(shù)量,數(shù)量為小數(shù),我們先把整數(shù)部分的星星修改成評分顏色(示例中為黃色),然后使用剪切方法對星星進行操作,得到不足一個星星的大小,把該大小修改成評分顏色,這樣便把小數(shù)部分值也體現(xiàn)到了評分星星上。剪切組件相關的內容,我們在前面章回中介紹過,這里就不詳細介紹了。

看官們,關于"如何自定義評分條"相關的內容就介紹到這里,歡迎大家在評論區(qū)交流與討論!文章來源地址http://www.zghlxwxcb.cn/news/detail-618656.html

到了這里,關于第九十七回 自定義評分條的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

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

領支付寶紅包贊助服務器費用

相關文章

  • 一起Talk Android吧(第五百四十回:ImageView的縮放)

    各位看官們大家好,上一回中咱們說的例子是\\\"RxJava中的總結\\\",本章回中介紹的例子是\\\"I mageView的縮放 \\\"。閑話休提,言歸正轉,讓我們一起Talk Android吧! 通常情況下ImageView組件主要用來顯示圖片,因此需要使用圖片當作顯示內容,這個可以通過 ImageView 的src屬性來設置被顯示的

    2023年04月09日
    瀏覽(24)
  • 第九十四回 如何打造一個網(wǎng)絡框架

    我們在上一章回中介紹了\\\"如何mock數(shù)據(jù)\\\"相關的內容,本章回中將介紹如 何打造一個網(wǎng)絡框架 閑話休提,讓我們一起Talk Flutter吧。 最近在項目中使用dio處理網(wǎng)絡相關的內容,有些地方的代碼不能利用,有些地方的代碼耦合度比較高,因此準備在dio上面封裝一層網(wǎng)絡層,這些可

    2024年02月15日
    瀏覽(91)
  • 第九十六回 網(wǎng)絡綜合示例:獲取天氣信息

    我們在上一章回中介紹了dio庫中轉換器相關的內容,本章回中將介紹網(wǎng)絡綜合示例: 獲取天氣信息 .閑話休提,讓我們一起Talk Flutter吧。 我們在前面章回中介紹了網(wǎng)絡操作相關的內容,本章回中將綜合利用這些內容實現(xiàn)一個獲取天氣信息的例子。主要包含dio庫的使用、網(wǎng)絡操

    2024年02月14日
    瀏覽(21)
  • 一起Talk Android吧(第五百四十八回:如何創(chuàng)建垂直版SeekBar)

    一起Talk Android吧(第五百四十八回:如何創(chuàng)建垂直版SeekBar)

    各位看官們大家好,上一回中咱們說的例子是\\\"藍牙廣播中的廠商數(shù)據(jù)\\\",本章回中介紹的例子是\\\" 如何創(chuàng)建垂直版SeekBar \\\"。閑話休提,言歸正轉,讓我們一起Talk Android吧! 看官們,我們在這里說的 SeekBar 就是滑動條,如果有看官忘記的話,可以查看之前的博客。 SeekBar 在默認情

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

    各位看官們大家好,上一回中咱們說的例子是\\\"RxJava中的多線程操作\\\",本章回中介紹的例子是\\\"R xJava中的線程切換 \\\"。閑話休提,言歸正轉,讓我們一起Talk Android吧! 我們在上一章回中介紹了如何創(chuàng)建多線程,本章回將介紹如何進行線程切換。線程切換是指在主線程和子線程之

    2023年04月08日
    瀏覽(17)
  • 第九十三回 在Flutter中mock數(shù)據(jù)

    我們在上一章回中介紹了\\\"在Flutter中解析JSON數(shù)據(jù)\\\"相關的內容,本章回中將介紹 如何mock數(shù)據(jù) .閑話休提,讓我們一起Talk Flutter吧。 我們在本章回中介紹的mock數(shù)據(jù)主要是通過相關的代碼模擬服務器返回相關的數(shù)據(jù),這些數(shù)據(jù)可以是正確的數(shù)據(jù),也可以是錯誤的數(shù)據(jù)。通過mock數(shù)據(jù)

    2024年02月15日
    瀏覽(23)
  • 一起Talk Android吧(第五百四十六回:如何判斷手機是否安裝GooglePlay)

    各位看官們大家好,上一回中咱們說的例子是\\\"如何實現(xiàn)流水動畫\\\",本章回中介紹的例子是\\\" 如何判斷手機是否安裝GooglePlay \\\"。閑話休提,言歸正轉,讓我們一起Talk Android吧! 我們在這里說的 GooglePlay 就是Google的應用市場,它本質上也是應用程序,只是在國內無法使用,因此部

    2024年02月09日
    瀏覽(24)
  • 第九十六天學習記錄:Linux基礎:實用操作Ⅰ

    第九十六天學習記錄:Linux基礎:實用操作Ⅰ

    注:第一張圖與學習記錄無關,是為了參與CSDN的AI繪圖活動 1、Linux某些程序的運行,如果想要強制停止它,可以使用快捷鍵Ctrl+C中止 2、在命令輸入錯誤時,也可以通過快捷鍵Ctrl+C快速退出當前輸入 1、可以通過快捷鍵:Ctrl+D,退出賬戶的登錄 2、退出某些特定程序的專屬頁面

    2024年02月12日
    瀏覽(36)
  • 數(shù)據(jù)庫管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

    數(shù)據(jù)庫管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

    第四堂繼續(xù)! 收集Schema統(tǒng)計信息 開啟制定表索引監(jiān)控 創(chuàng)建索引組織表 按照題目要求創(chuàng)建對應的表: 收集直方圖統(tǒng)計信息 創(chuàng)建位圖索引(低選擇性) 壓縮索引 共享池保存 綁定變量配置為相似匹配 段空間管理改為自動 需要將CUST_TBS表空間轉換為級自動管理: 收集多列統(tǒng)計

    2024年02月15日
    瀏覽(47)
  • 數(shù)據(jù)庫管理-第九十三期 19c OCM之路-第四堂(01)(20230719)

    距離上一期19c OCM之路已經(jīng)過去了整整8天了,這中間發(fā)生的事情詳見第九十二期。本期來到第四堂 Performance management 性能管理,但是一開始需要把上一堂的一些內容做一些調整和補遺。 Additional configuration 其他配置 在上一堂的其他配置中,我是把并行相關內容放過去了,但是

    2024年02月16日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領取紅包

二維碼2

領紅包