Search code examples
flutterdartdart-null-safety

The non-nullable variable 'screenWidth' must be initialized


This is my size_config.dart file and I'm getting this error, don't know why.

I'm getting errors in every variable like 
The non-nullable variable '_mediaQueryData' must be initialized.
The non-nullable variable 'screenWidth' must be initialized.
The non-nullable variable 'screenHeight' must be initialized.
The non-nullable variable 'defaultSize' must be initialized.
The non-nullable variable 'orientation' must be initialized.
    import 'package:flutter/material.dart';

    class SizeConfig {
        static MediaQueryData _mediaQueryData; //error
        static double screenWidth; //error
        static double screenHeight; //error
        static double defaultSize; //error
        static Orientation orientation; //error

    void init(BuildContext context){
        _mediaQueryData = MediaQuery.of(context);
        screenHeight = _mediaQueryData.size.height;
        screenWidth = _mediaQueryData.size.width;
        orientation = _mediaQueryData.orientation;
    }
    }

    double getProportionateScreenHeight(double inputHeight){
        double screenHeight = SizeConfig.screenHeight;
        return (inputHeight / 812.0) * screenHeight;
    }

    double getProportionateScreenWidth(double inputWidth){
        double screenWidth = SizeConfig.screenWidth;
        return (inputWidth / 375.0) * screenWidth;
    }

Solution

  • You can use the null check operator (? or !), here's official documentation of null safety.

    import 'package:flutter/material.dart';
    
    class SizeConfig {
      static MediaQueryData? _mediaQueryData; 
      static double? screenWidth; 
      static double? screenHeight;
      static double? defaultSize; 
      static Orientation? orientation; 
    
      void init(BuildContext context) {
        _mediaQueryData = MediaQuery.of(context);
        screenHeight = _mediaQueryData?.size.height;
        screenWidth = _mediaQueryData?.size.width;
        orientation = _mediaQueryData?.orientation;
      }
    }
    
    double getProportionateScreenHeight(double inputHeight) {
      double? screenHeight = SizeConfig.screenHeight;
      return (inputHeight / 812.0) * screenHeight!;
    }
    
    double getProportionateScreenWidth(double inputWidth) {
      double? screenWidth = SizeConfig.screenWidth;
      return (inputWidth / 375.0) * screenWidth!;
    }