Часть после: называется "списком инициализатора". Это список выражений, которые могут обращаться к параметрам конструктора и могут назначать полям экземпляра, даже полям конечного экземпляра.
Первый двоеточие, то есть DietPlan() : super(keyDietPlan);
означает, что вы вызываете супер-конструктор, в данном случае конструктор ParseCloneable. Это базовая OOP концепция, вы можете расширять или реализовывать один класс в другой, и вы должны вызывать конструктор суперкласса, если вы это делаете. стиль выполнения того же в Dart.
Второе двоеточие работает аналогичным образом, чтобы понять, что вам нужно понять, что такое клонирование объектов, клонирование объектов относится к созданию точной копии объекта. новый экземпляр класса текущего объекта и инициализирует все его поля точно содержимым соответствующих полей этого объекта. Это то, что происходит во второй строке.