參考文章:https://juejin.cn/post/7381767811679502346 一般如果不依賴第三方庫的話,刷新UI的方式通常有以下幾種方式: 1、setState 2、ChangeNotifier 3、ValueNotifier(ValueListenableBuilder) 這裏主要記錄第三種方式,因為他有如下優點: 1、可以控制“局部”刷新
代碼如下: import 'package:flutter/material.dart'; class TestPageCheckboxDemo extends StatefulWidget { const TestPageCheckboxDemo({super.key}); @override StateTestPageCheckboxDemo createState() =
背景:需要實現一個類似 elementui 級聯組件 https://element.eleme.cn/#/zh-CN/component/cascader 的搜索效果,選中了標籤顯示在前面,輸入框顯示在後面,佔滿整行中的剩餘部分,效果如下: 自己嘗試了很久,還是沒能實現,知道找到組件 wrapfit 安裝依賴: wrapfit: ^0.1.0 代碼如下: ListString i
背景: 使用elementui組件時,通常會碰到這類需求,需要el-input一樣的樣式效果,但是不能輸入,卻需要點擊叉叉刪除文字內容,提供的原始屬性無法滿足,所以需要做一些改動。 要求: 1、交互效果和el-input一致; 2、不可輸入,但是可以點擊右側叉叉清空內容; 3、右側叉叉在文本框沒有內容時隱藏,有內容時,鼠標移上去顯示,鼠標移出隱藏; 效果圖如下: 代碼如下:vue 2
目的有兩個: 1、將json轉成dart類,發揮強類型的優勢,能夠.出來提示,不容出錯,默認情況下只能obj['name']方式來訪問屬性; 2、將dart類轉成json;入庫需要; 其實最原始的方法就是將獲取到的json字符串jsonDecode(jsonStr),這樣,如果jsonStr是對象,就能得到MapString, dynamic,如果jsonStr是數組,就能得到List
最近在學習flutter,研究別人的組件,剛好看到一段代碼設計,如下(精簡過後): 代碼解釋: 1、抽象類ColumnType提供了屬性defaultValue、方法test(); 2、具體類ColumnTypeNumber 實現implements了ColumnType; 3、具體類ColumnTypeNumber 混入with了ColumnTypeWithNumber;
一、集合比較 在 Dart 中,DeepCollectionEquality 類是 collection 包中的一個類,用於比較兩個集合(如 List、Set、Map 等)是否相等,並且進行深度比較。這意味着它不會比較集合的引用,而是會遞歸地比較集合中的每個元素的內容,確保集合內部的內容也完全相同。 通常,== 運算符只能比較對象的引用是否相等,而 DeepCollectionEquality 會
一、初識 mixin 在 Dart 中,mixin 是一種複用代碼的方式,允許將類的功能共享給多個類,而不需要通過繼承的方式。它提供了一種輕量級的方式來讓多個類共享相同的行為,而不必強制要求它們有共同的父類。 mixin 的作用: 避免多重繼承:Dart 不支持多重繼承,但是 mixin 可以讓你在多個類之間共享代碼,從而避免了多重繼承帶來的複雜性。 代碼複用:通過 mixin,你可以將一組
依賴插件如下: https://www.npmjs.com/package/panzoom(9.4.3) https://www.npmjs.com/package/decimal.js/v/10.2.0(10.2.0) https://nightcatsama.github.io/vue-slider-component/#/api/slots(vue-slider-compo
代碼如下: 參考 https://sortablejs.github.io/Vue.Draggable/#/functional template draggable v-model="rows" tag="div" class="wrapper" handle=".group-mover" div class="columns-wrapper" v-for="(col, idxCo