首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >非空变量'screenWidth‘必须初始化。

非空变量'screenWidth‘必须初始化。
EN

Stack Overflow用户
提问于 2022-08-09 10:37:05
回答 3查看 151关注 0票数 1

这是我的size_config.dart文件,我收到了这个错误,不知道为什么。

代码语言:javascript
复制
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.
代码语言:javascript
复制
    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;
    }
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2022-08-09 11:32:26

您可以使用null check操作符(?!),即空安全的下面是官方文档。

代码语言:javascript
复制
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!;
}
票数 0
EN

Stack Overflow用户

发布于 2022-08-09 10:54:16

你有两个选择。

您可以在sdk: ">=2.10.0 <3.0.0"文件中使用环境pubspec.yaml版本关闭空安全特性。

2-使用late关键字初始化所有变量

票数 0
EN

Stack Overflow用户

发布于 2022-08-09 12:17:48

代码语言:javascript
复制
import 'package:flutter/material.dart';

class SizeConfig {
  static MediaQueryData _mediaQueryData; 
  late double screenWidth; 
  late double screenHeight;
  late double defaultSize; 
  late 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!;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73290409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档