In Dart, as in many other object oriented programming languages, objects are always pass-by-value. But you can still pass pointers to objects and arrays by value.
class Wrapper { int i = 0; } test() { Wrapper wrapper = Wrapper(); wrapper.i = 10; print(wrapper.i); increase(wrapper); print('First increase: value: ${wrapper.i}'); increase(wrapper); print('Second increase: value: ${wrapper.i}'); } increase(Wrapper wrapper) { wrapper.i++; }
Initial value: 10 First increase: value: 11 Second increase: value: 12