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