For the complete documentation index, see llms.txt. This page is also available as Markdown.

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