Import Aliases

Import Aliases

About

  • Naming Conflicts: Solve identifier clashes
  • Readability: Clarify origins
  • Syntax: as keyword
  • Usage: Common with platform libraries

Main Topics

  1. Basic Alias

    • Definition: Simple renaming

    • Example:

      import 'package:flutter/material.dart' as material;
      
      material.Text('Hello');
  2. Conflict Resolution

    • Definition: Same-named classes
    • Example:
      import 'package:graphql/client.dart' as gql;
      import 'package:another_gql/client.dart' as agql;
  3. Readability Improvement

    • Definition: Clarify source

    • Example:

      import 'package:timezone/timezone.dart' as tz;
      
      final now = tz.TZDateTime.now(tz.local);
  4. Platform Libraries

    • Definition: Web vs io
    • Example:
      import 'dart:html' as html;
      import 'dart:io' as io;
  5. Common Conventions

    • Definition: Community standards
    • Example:
      import 'package:flutter_test/flutter_test.dart' as test;
      import 'package:mockito/mockito.dart' as mockito;

How to Use

  • Conflicts: When names collide
  • Clarity: Long package names
  • Testing: Mock libraries
  • Platform: Conditional imports

How It Works

  1. Namespace: Creates new prefix
  2. Access: Dot notation
  3. Scope: Only affects import
  4. Performance: No runtime cost

Example:

import 'package:http/http.dart' as http;
import 'package:local_storage/local_storage.dart' as storage;

class ApiService {
  final http.Client client;
  final storage.LocalStorage cache;

  ApiService(this.client, this.cache);
}

Conclusion

Import aliases provide an elegant solution to naming conflicts while improving code clarity. By using the as keyword, developers can disambiguate similar classes and make library origins immediately apparent in the code.