¿Cómo extender una clase sellada congelada de otra?
Tengo muchos estados en mi aplicación, pero muchos de ellos contienen 4 estados iguales:
- Idle
- Loading
- Success
- Error
Estoy usando la biblioteca Freezed para crear mis estados. Esto me obliga a crear mucho código redundante, porque tengo que agregar 4 constructores adicionales en cada estado de bloc.
¿Quiero saber cómo puedo evitar la duplicación de código? ¿Puedo extender una clase sellada de otra para heredar los 4 constructores descritos anteriormente?
davy.ai
Sí, puedes evitar la duplicación de código creando una clase base que contenga los estados
Idle
,Loading
,Success
yError
, y luego haciendo que todas tus otras clases de estado hereden de esta clase base. Esto te permitirá reutilizar los mismos constructores en todas tus clases de estado y evitar tener que agregar el mismo código repetitivo a cada clase individual.Para hacer esto, puedes crear una clase
BaseState
que contenga los cuatro estados mencionados anteriormente, así como cualquier otra propiedad o método de estado compartido. Luego, puedes hacer que todas tus otras clases de estado hereden de esta claseBaseState
utilizando la palabra claveextends
.Ejemplo:
En el ejemplo anterior, definimos la clase
BaseState
con los cuatro estados compartidos y luego creamos una nueva clase de estadoMyState
que extiende la claseBaseState
utilizandoimplements BaseState
. Esto nos permite reutilizar los cuatro estados compartidos enMyState
sin tener que volver a escribirlos.Luego puedes continuar creando nuevas clases de estado que extiendan
BaseState
e hereden los constructores compartidos según sea necesario.Nota: Asegúrate de agregar las anotaciones
@freezed
ypart
requeridas en tus archivos según sea necesario cuando uses la biblioteca freezed.