scope
  • Overview
  • Fundamentals
    • Installing
    • Scope
      • Creating
      • Using
      • Detecting
      • Nesting
      • Async
      • Single and Sequence factories
      • Returning values
      • Mutable values
    • GlobalScope
    • Overriding
    • Type safety
    • Debugging
    • How Scope Works
  • Guides
    • Best Practice
    • How is Scope different from 'x'
Powered by GitBook
On this page
  1. Fundamentals

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
PreviousOverridingNextDebugging

Last updated 3 years ago