'How to make Dart detects enum extensions from different file globally?

I wanted to create an extension for generated enum from amplify model generator, so I created the extension in different file (because the enum is autogenerated) but Dart is not detecting my extension when I try to using it.

Auto Generated Enum PetsType.dart

/*
* Copyright 2021 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
*  http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/

// NOTE: This file is generated and may not follow lint rules defined in your app
// Generated files can be excluded from analysis in analysis_options.yaml
// For more info, see: https://dart.dev/guides/language/analysis-options#excluding-code-from-analysis

// ignore_for_file: public_member_api_docs, file_names, unnecessary_new, prefer_if_null_operators, prefer_const_constructors, slash_for_doc_comments, annotate_overrides, non_constant_identifier_names, unnecessary_string_interpolations, prefer_adjacent_string_concatenation, unnecessary_const, dead_code

enum PetsType { DOG, CAT, BIRD, HAMSTER, FISH, OTHER }

pets_type_extension.dart

extension EnumPetCategoryExtension on PetsType {
  Color get color => _getColor(this);
  IconData get icon => _getIcon(this);
  String get valueString => _getUiValue(this);

  Color _getColor(PetsType category) {
    switch (category) {
      case PetsType.DOG:
        return const Color(0xffFFB56B);
      case PetsType.CAT:
        return const Color(0xffFFD977);
      case PetsType.BIRD:
        return const Color(0xff826491);
      case PetsType.HAMSTER:
        return const Color(0xffA66551);
      case PetsType.FISH:
        return const Color(0xff6DB5AD);
      case PetsType.OTHER:
        return const Color(0xffFFB56B);
    }
  }

  IconData _getIcon(PetsType category) {
    switch (category) {
      case PetsType.DOG:
        return Icons.ac_unit;
      case PetsType.CAT:
        return Icons.account_tree_outlined;
      case PetsType.BIRD:
        return Icons.airline_seat_legroom_reduced;
      case PetsType.HAMSTER:
        return Icons.bookmark_add_sharp;
      case PetsType.FISH:
        return Icons.bed;
      case PetsType.OTHER:
        return Icons.computer_sharp;
    }
  }

  String toShortString() {
    return toString().split('.').last;
  }

  String toUpperCase() {
    return toShortString().toUpperCase();
  }

  String _getUiValue(PetsType category) {
    switch (category) {
      case PetsType.DOG:
        return LocaleKeys.petTypes_dog.tr();
      case PetsType.CAT:
        return LocaleKeys.petTypes_cat.tr();
      case PetsType.BIRD:
        return LocaleKeys.petTypes_bird.tr();
      case PetsType.HAMSTER:
        return LocaleKeys.petTypes_hamster.tr();
      case PetsType.FISH:
        return LocaleKeys.petTypes_fish.tr();
      case PetsType.OTHER:
        return LocaleKeys.petTypes_others.tr();
    }
  }
}

ERROR extension unrecognized

Note: Pet model is using PetsType enum as a property type.



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source