精华内容
参与话题
问答
  • import 'package:flutter/material.dart'; import 'SwipeToDismissDemo.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { // This widget is the root of your application. @...

    main.dart

    import 'package:flutter/material.dart';
    import 'SwipeToDismissDemo.dart';
    
    void main() {
      runApp(MyApp());
    }
    
    class MyApp extends StatelessWidget {
      // This widget is the root of your application.
      @override
      Widget build(BuildContext context) {
        return MaterialApp(
          title: 'Flutter Demo',
          theme: ThemeData(
            primarySwatch: Colors.blue,
            visualDensity: VisualDensity.adaptivePlatformDensity,
          ),
            home: SwipeToDismissDemo()
        );
      }
    }
    
    SwipeToDismissDemo.dart
    
    import 'package:flutter/material.dart';
    
    class SwipeToDismissDemo extends StatefulWidget{
    
      @override
      State<StatefulWidget> createState() {
        return new _SwipeToDismisState();
      }
    }
    
    class _SwipeToDismisState extends State<SwipeToDismissDemo>{
    
      List<String> list = List.generate(20, (index) => "This is title $index element");
      @override
      Widget build(BuildContext context) {
        return new Scaffold(
          appBar: AppBar(title: Text("this is title"),),
          body: ListView.builder(itemCount:list.length,
          itemBuilder: (context, index){
            //左滑的空控件
            return Dismissible(
              key: Key(list[index]),
              direction: DismissDirection.endToStart,
              child: ListTile(title: Text('${list[index]}')),
              background: Container(
                color: Colors.redAccent,
              ),
              onDismissed: (direction) {
                setState(() {
                  Scaffold.of(context).showSnackBar(
                      SnackBar(content: Text("${list[index]}")));
                  list.removeAt(index);
                });
              },
            );
          }),
        );
      }
    }

    效果图如下:

           

    展开全文
  • 主要介绍了Flutter List数组避免插入重复数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • Flutter List数组避免插入重复数据

    千次阅读 多人点赞 2020-09-02 10:43:05
    志当存高远。——诸葛亮 List 具有一定长度存在索引的对象集合(长度为0不存在索引,长度>0存在索引)

    志当存高远。——诸葛亮

     List

    具有一定长度存在索引的对象集合(长度为0不存在索引,长度>0存在索引)

    常见列表

    1、定长列表

    默认值null

    例如:List<int> fixedLengthList = new List(2)、List<int> fixedLengthList = new List(8)

    List<int> fixedLengthList = new List(2);
    for(int i=0;i<2;i++){
       print("索引为${i}的值${fixedLengthList[i]}");
    }
    I/flutter ( 9251): 索引为0的值null
    I/flutter ( 9251): 索引为1的值null
    

     

     

    固定长度不可修改 

    List<int> fixedLengthList = new List(2);
    //改变固定数组长度
    fixedLengthList.length=30;

    Unsupported operation: Cannot change the length of a fixed-length list

    大概意思:无法更改固定长度数组的长度

    List<int> fixedLengthList = new List(2);
    ///执行添加数据操作
    fixedLengthList.add(0);
    fixedLengthList.add(1);
    List<int> fixedLengthList = new List(2);
        fixedLengthList[0]=1;
        fixedLengthList[1]=2;
    ///添加数据
    fixedLengthList.addAll([3,4]);

     Unsupported operation: Cannot add to a fixed-length list
    大概以上: 不能添加数据到固定长度数组 

    List<int> fixedLengthList = new List(2);
    //执行插入数据
    fixedLengthList.insert(0, 0);

    Unsupported operation: Cannot add to a fixed-length list
    大概意思: 不能添加数据到固定长度数组  

       List<int> fixedLengthList = new List(2);
        ///执行删除操作
        fixedLengthList.removeLast();
    List<int> fixedLengthList = new List(2);
        ///执行删除操作
        fixedLengthList.removeAt(0);
     List<int> fixedLengthList = new List(2);
        fixedLengthList[0]=1;
        fixedLengthList[1]=2;
    ///删除包含索引0和1范围内数据
    fixedLengthList.removeRange(0, 1);
    List<int> fixedLengthList = new List(2);
        fixedLengthList[0]=1;
        fixedLengthList[1]=2;
    ///删除索引0-1,然后在进行替换删除索引值
    fixedLengthList.replaceRange(0, 1, [3,4]);

    Unsupported operation: Cannot remove from a fixed-length list
    大概意思:不能删除固定长度数组数据

    List<int> fixedLengthList = new List(2);
    ///执行清除数据操作
    fixedLengthList.clear();

    Unsupported operation: Cannot clear a fixed-length list
    大概意思:不能清理固定长度数组数据

    可排序、替换、截取

    List<int> fixedLengthList = new List(2);
    fixedLengthList[0]=1;
    fixedLengthList[1]=2;
    
    ///执行截取指定范围的数组
    fixedLengthList.sublist(0);
    ///排序
    fixedLengthList..sort((a, b) => a.compareTo(b));
    ///
    fixedLengthList.setRange(0, 1, [3,4],0);
    ///索引0-1范围的值不包括1,修改成3
    fixedLengthList.fillRange(0, 1,3);

    2、可增长列表 

    可改变数组长度、 可执行添加、删除、可排序、可替换、可截取

    .可增长列表[]保留了内部缓冲区

    .缓冲区可增长

    .添加数据操作在固定时间内执行 (设置固定长度会花费与新长度成比例的时间,修改容量,添加操作将需要立即增加缓冲区容量)

    .列表是可以迭代的

    .在执行列表操作时,例如在调用forEachsort期间,通常不允许修改列表的长度(添加或删除元素)

    .通过直接迭代列表或通过迭代由列表支持的Iterable更改列表的长度,可以中断迭代

    List<int> fixedLengthList = [];
    
        //改变数组长度
        fixedLengthList.length=2;
        ///执行添加数据操作
        fixedLengthList.add(0);
        fixedLengthList.add(1);
        fixedLengthList[0]=1;
        fixedLengthList[1]=2;
        ///添加数据
        fixedLengthList.addAll([3,4]);
        //执行插入数据
        fixedLengthList.insert(0, 0);
        ///执行删除操作
        fixedLengthList.removeLast();
        ///执行删除操作
        fixedLengthList.removeAt(0);
        ///删除包含索引0和1范围内数据
        fixedLengthList.removeRange(0, 1);
        ///删除索引0-1,然后在进行替换删除索引值
        fixedLengthList.replaceRange(0, 1, [3,4]);
    
        fixedLengthList.sublist(0);
        fixedLengthList..sort((a, b) => a.compareTo(b));
        fixedLengthList.setRange(0, 1, [3,4],0);
        fixedLengthList.fillRange(0, 1,3);
    
        ///执行清除数据操作
        fixedLengthList.clear();

    3、contains 过滤重复 添加

    (int、double、bool、String)类型数据

    1、int类型数组中插入重复数据 

    List<int> listInts = [];
    
      void addIntData(int addValue){
        bool isContainer=listInts.contains(addValue);
        if(!isContainer){
          listInts.add(addValue);
        }
        print("数组长度${listInts.length}");
      }

    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1 

     2、double类型数组中插入重复数据

    List<double> listDouble = [];
    
      void addDoubleData(double addValue){
        bool isContainer=listDouble.contains(addValue);
        if(!isContainer){
          listDouble.add(addValue);
        }
        print("数组长度${listDouble.length}");
      }

    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
     

    3、String类型数组中插入重复数据

     List<String> listStrings = [];
    
      void addStringData(String addValue){
        bool isContainer=listStrings.contains(addValue);
        if(!isContainer){
          listStrings.add(addValue);
        }
        print("数组长度${listStrings.length}");
      }

    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
     

    4、boolean类型数组插入重复数据

      List<bool> listBool = [];
    
      void addBoolData(bool addValue){
        bool isContainer=listBool.contains(addValue);
        if(!isContainer){
          listBool.add(addValue);
        }
        print("数组长度${listBool.length}");
      }

    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
    I/flutter (28028): 数组长度1
     

    4、List对象去重 

    class A{
      String a;
      int b;
    
      A(this.a, this.b);
    }

    1、要添加的对象A的每个值和数组里面存在的每个对象的值做比较 (效率低、适合少量数据去重)

      List<A> listAs = [];
    
      void addAData(A addValue){
    
        int length=listAs.length;
        if(length==0){
          listAs.add(addValue);
        }else {
          for (int i = 0; i < length; i++) {
            A a = listAs[i];
            if (a.a != addValue.a && a.b != addValue.b) {
              listAs.add(addValue);
            }
          }
        }
        print("数组长度${listAs.length}");
      }

    2、List配合Set去除重复对象

    List<A> listAs = [];
    Set<A> setAs=new Set<A>();
    
    void addASData(A addValue){
        if(listAs.length==0) {
          listAs.add(addValue);
          setAs.addAll(listAs);
        }else{
          listAs.add(addValue);
        }
        List<A> list=setAs.toList();
        print("数组长度${list.length}");
    }
    addASData(new A("a", 0));

    I/flutter (10386): 数组长度1
    I/flutter (10386): 数组长度1
    I/flutter (10386): 数组长度1
    I/flutter (10386): 数组长度1
    I/flutter (10386): 数组长度1
    I/flutter (10386): 数组长度1

    参考:

    list :https://api.dart.dev/stable/2.9.2/dart-core/List-class.html

    Set:https://api.dart.dev/stable/2.9.2/dart-core/Set-class.html 

    展开全文
  • If your issue is related to the Flutter framework itself, please open an issue at <a href="https://github.com/flutter/flutter/issues/new">github.com/flutter/flutter</a>. <h2>Steps to Reproduce <p>...
  • Lista = List(); List b =List(); a = ['1', '2', '3']; b = a; b.clear(); print(a); print(b); 此时因为b=a 所以ab指向同一个地址,b.clear()导致a所指的数组也会被clear(),所以应该在赋值时使用 b = a....
    List a = List();
    
    List b =List();
    
    a = ['1', '2', '3'];
    
    b = a;
    
    b.clear();
    
    print(a);
    
    print(b);

    此时因为b=a 所以ab指向同一个地址,b.clear()导致a所指的数组也会被clear(),所以应该在赋值时使用

    b = a.toList();

    来进行一个copy,这样b所指的数组与a所指向数组地址就不相同。

    展开全文
  • Flutter list<int> int 类型转文字

    千次阅读 2019-10-28 15:58:25
    我们在使用Socket进行请求的时候 接收到的返回值一般也是list<int>类型 有时候需要转换成字符串 所以自己写了一个工具类 下面我贴出方法 供大家参考 1将List<int>转换为int值 //将数组转换成int值 ...

    我们在使用Socket进行请求的时候  接收到的返回值一般也是list<int>类型  有时候需要转换成字符串   所以自己写了一个工具类

    下面我贴出方法   供大家参考

    1将List<int>转换为int值

        //将数组转换成int值  一般接收的时候需要
        // ignore: missing_return
        int  listToValue(List<int> data){
        //data  [a0,a1]
            switch(data.length){
              case 2:
                return (data[1]<<8)+data[0];
    
                break;
              case 4:
                return data[0]+(data[1]<<8)+(data[2]<<16)+(data[3]<<24);
    
                break;
              case 8:
                return data[0]+(data[1]<<8)+(data[2]<<16)+(data[3]<<24)+
                    (data[4]<<32)+(data[5]<<40)+(data[6]<<48)+(data[7]<<56);
    
                break;
    
              case 16:
                return data[0]+(data[1]<<8)+(data[2]<<16)+(data[3]<<24)+
                        (data[4]<<32)+(data[5]<<40)+(data[6]<<48)+(data[7]<<56)+
                        (data[8]<<64)+(data[9]<<72)+(data[10]<<80)+(data[11]<<88)+
                        (data[12]<<96)+(data[13]<<104)+(data[14]<<112)+(data[15]<<116);
    
                break;
    
            }
        }

    2.因为每个公司的业务不同  所以  大家按照自己公司的业务来截取对应位置的数据 

    
        //将unicode或ascii编码类型的list(编码格式 长度 字符串内容)转换为String字符串
        String unicodeOrAsciiList2String(List<int> data){
               //获取字符串长度对应的数据
             List<int> lengthList= data.sublist(1,3);
                //获取字符串长度的int值
             int length=listToValue(lengthList);
             if(length==0){     //长度为0
               return '';
             }else{             //长度不为0  
              List<int> strList= data.sublist(3,data.length);
              String result='';
               if(data[0]==1){       //ASCII编码
                    strList.forEach((value){
                        result+=String.fromCharCode(value);
                    });
                    return result;
               }else if(data[0]==2){ //UNICODE编码
                  for(int i=0;i<strList.length~/2;i++){
                     List<int> current=  strList.sublist(i*2,(i+1)*2);
                    result+=String.fromCharCode(listToValue(current));
                  }
                  return result;
               }
             }
        }
    
    
       //字符串转ascii编码数组
        List<int> str2AsciiList(String text){
          List<int> temp=text.codeUnits;
          List<int> result=[];
          List<int> lengthList= HexadecimalConversionUtils().valueToList(temp.length, 2);
          result..add(1)..addAll(lengthList)..addAll(temp);  //编码格式  长度  内容
          return result;
        }
    
    
    
    
        //将字符串转换为unicode格式的   编码格式  长度  字符串内容 形式的list集合
        List<int> str2unicodeList(String text){
          List<int> temp=text.codeUnits;
          List<int> textList=List();
          List<int> result=[2];  //unicode编码
            for(int i=0;i<temp.length;i++){
               List<int> charList= valueToList(temp[i],2);
               charList.reversed;
               textList.addAll(charList);
            }
          List<int>  textLengthList=valueToList(textList.length, 2);
            result..addAll(textLengthList)..addAll(textList);
            return result;
        }

    HexadecimalConversionUtils:

     //将一个Int值转化为数组  一般发送时候需要
          // ignore: missing_return
          List<int> valueToList(int value,int length){
           switch(length){
             case 2:
                int a0=value&0xff;
                int a1=(value>>8)&0xff;
               return [a0,a1];
    
               break;
             case 4:
               int a0=value&0xff;
               int a1=(value>>8)&0xff;
               int a2=(value>>16)&0xff;
               int a3=(value>>24)&0xff;
               return [a0,a1,a2,a3];
    
               break;
             case 8:
               int a0=value&0xff;
               int a1=(value>>8)&0xff;
               int a2=(value>>16)&0xff;
               int a3=(value>>24)&0xff;
               int a4=(value>>32)&0xff;
               int a5=(value>>40)&0xff;
               int a6=(value>>48)&0xff;
               int a7=(value>>56)&0xff;
               return [a0,a1,a2,a3,a4,a5,a6,a7];
    
               break;
    
           }
        }
    

     

    展开全文
  • 通常使用List渲染,写法如下: Widget _medicPlanDisplayContent(BuildContext context, PlanModels planModels) { return Container( child: Column( children: planModels.plan.map((planModel) { return _...
  • 作者|王乾元(神漠)出品|阿里巴巴新零售淘系技术部前言何谓大 Cell 问题?在基于 Native List 的渲染方案中,都会遇到大 Cell 问题。比如 Weex 业务中,经常出现...
  • 前言 何谓大 Cell 问题?在基于 Native List 的渲染...在 Flutter 里同样有这个问题,本质原因都是因为 List 进行回收的单位是 Cell,而不是 Cell 中的图片。在浏览器体系下,不存在这个问题,想必是浏览器进行了...
  • flutter 解析list

    千次阅读 2019-01-28 10:48:01
    flutter解析list过程中出现一点小波折,相信很多小伙伴也会遇到,谨以此记: 如果可以用第三方库的话,可以使用此大神博客:https://blog.csdn.net/qqqq245425070/article/details/83931496 但是我想知道用dart...
  • FlutterList

    2019-10-08 01:59:59
    // 1.list的创建 listCreate(); // 2.多种类型的输出 listPrint(); // 3.添加数据 listAddElement(); // 4.删除数据 listRemoveElement(); // 5.更改列表元素 changeTheListElements...
  • flutter dart list 排序

    千次阅读 2020-01-06 12:52:07
    工作中经常用到,商品...List list=new List(); list.add(new Form("AAAA",1)); list.add(new Form("BBBB",2)); list.add(new Form("CCCCC",3)); list.sort((left,right)=>left.age.compare(right.age)); ...
  • flutter Get list observable

    2020-11-30 11:42:47
    Note about Lists ... That way, if you add a value to a list, it will automatically rebuild the widgets that use it. You also don't need to use ".value" with lists, the amazing dart api allowed us
  • flutter dart list 遍历数据

    千次阅读 2020-01-06 17:17:43
    经常遇到需要遍历数据的问题: ...ListFollow.forEach((item) { if (item.name.contains(name)) { _listUser.add(item); } }); 觉得有用记得点赞,加关注,有问题可以加Q群号:913934649一起探讨 ...
  • 提问者的意思: 我布局的一个可以被点击的图片列表,在列表上面有文本和图片,试图去为列表添加图片后能滚动,没有顶部图像移动或在这一点上,两种方式都是好的。 试图建立的列表抛出一个viewport错误,当设置...
  • flutter dart 之list 排序

    万次阅读 2019-01-31 15:59:31
    List list=new List(); list.add(new Form("小明",15)); list.add(new Form("小小明",1)); list.add(new Form("大明",25)); list.sort((left,right)=&gt;left.age.compare...
  • flutter dart List.generate

    2020-02-14 13:20:08
    生成值列表。 创建一个列表length与调用创造的价值立场...new List.generate(3, (int index) => index * index); // [0, 1, 4] 除非growable为true,否则创建的列表是固定长度的。 List<E>.generate( int l...
  • flutter_scrollable_list

    2020-10-03 17:13:52
    shinkWrap(boolean)是否由看到的内容决定列表的滚动范围 Expanded 设置可扩展的范围
  • flutter - sort List排序

    千次阅读 2019-10-18 16:28:07
    dart中,对List结构数据进行排序 注意 sort方法 会直接改变原List数组结构 List<Map> myList = [ { 'name' : 'ifredom',age:23}, { 'name' : 'JackMa',age:61}, { 'name' : 'zhazhahui',age:48}, ]; ...
  • 主要给大家介绍了关于利用flutter实现炫酷的list的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用flutter具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
  • flutterList 和 Map 的用法

    千次阅读 2019-10-02 20:28:22
    list集合 在Dart中,数组是List对象,因此大多数人只是将它们称为List。以下是一个简单的Dart的List: 创建一个int类型的list List list = [10, 7, 23]; print(list);// 输出结果 [10, 7, 23] 要创建一个...
  • flutter基础之Grid List

    2019-02-13 05:23:00
    有时我们需要Grid式的列表,例如我们打算做个手机淘宝或者网上商城一类的App。 使用方法 GridView.count( // Create a grid with 2 columns. If you change the scrollDirection to // horizontal, this would ...
  • 我们在使用Flutter的时候,...Unable to list devices: Unable to discover Android devices. Please run “flutter doctor” to diagnose potential issues 编译器提示我们运行flutter doctor 运行后提示** An...
  • flutter_list_drag_and_drop,列表的拖放实现,博客附件,效果请查看博客相对应项目。
  • Flutter实现List列表item拖动改变位置

    千次阅读 2019-04-10 15:34:35
    先看效果吧: 喜欢上面的效果吗?实现代码如下: ...import 'package:flutter/material.dart'; void main() => runApp( MaterialApp( home: HomePage(), ) ); class HomePage extends StatefulW...

空空如也

1 2 3 4 5 ... 20
收藏数 763
精华内容 305
关键字:

flutter list