1)在dart中对于基础数据类型String、int、bool、double是值传递也就是说给传入函数内的形参赋值不会改变外部变量的入参的值
2)而对象List、Set、Map、class是引用传递
我们每次调用函数,传递过去的对象都是对象的内存地址,而不是这个对象的复制。
参数是把内存地址传过去了,如果对这个内存地址上的对象修改,那么其他位置的引用该内存地址的变量值也会修改。
因为submitPhoto中使用的局部变量photoInfoModelList的内存地址已经发生改变,此时指向的是list的内存地址
看了上面的例子可能会反驳,第一个例子为什么就不能改变外部变量,这不是不对吗?
后续修改都是0x0002222内存的修改
总结:这是一个易忽视的坑,一般我们在传递某个全局model的属性给别的方法调用时,会在这个方法中对该数据进行处理,一定想要清楚是否需要在全局对数据进行修改来决定是传入基础类型还是对象