Type safety

Using strict type safety when using Scope is highly recommended as it will move many runtime errors into compile time errors.

When injecting a value be sure to declare its type.

import 'package:scope/scope.dart';

const ageKey = ScopeKey<int>();
const countKey = ScopeKey<int>();

/// Missing type when value is called.
/// When you try to `use` this key as an int
/// you will be in for a nasty surprise.
Scope()
  ..value(ageKey, 'my name');
  
/// type is correctly passed
Scope()
  ..value<int>(countKey, 10);

To ensure type safety when providing values we recommend that you use the lints package and add the following to your analysis_options.yaml file:

analyzer:
  language:
    strict-raw-types: true
    strict-inference: true
    # only available from dart 2.16
    strict-casts: true
  strong-mode:
    implicit-casts: false
    implicit-dynamic: false

Last updated