I have created these unions using Freezed:

abstract class ProductState with _$ProductState {
  factory ProductState.loading() = ProductLoading;
  factory ProductState.created(Product product) = ProductCreated;

Then I have a provider providing a class like this:

final createProductProvider =
    StateNotifierProvider<CreateProductController, ProductState>(
        (ref) => CreateProductController(ref));

class CreateProductController extends StateNotifier<ProductState> {

  createProduct() {
    // create product
    state = ProductCreated(product);

In another provider I want to access the underlying data in the union, the product variable.

I have been doing it like this so far:

if(state is ProductCreated) {
   final currentProduct = state.product

What is the proper way to do this? Create another provider?