深层copy list
List<E> cloneList<E>(List<E> source, E Function(E e) cloneFun) { return List.generate(source.length, (e) => cloneFun(source[e]), growable: true); }