由于各种原因,有时会build再次调用我的小部件的方法.
我知道这是因为父母更新了.但这会导致不良影响.导致问题的典型情况是使用FutureBuilder这种方式:
@override
Widget build(BuildContext context) {
return FutureBuilder(
future: httpCall(),
builder: (context, snapshot) {
// create some layout here
},
);
}
Run Code Online (Sandbox Code Playgroud)
在此示例中,如果再次调用构建方法,则会触发另一个http请求.这是不受欢迎的.
考虑到这一点,如何处理不需要的构建?有什么方法可以阻止构建调用?
Null check operator used on a null value尽管我在代码中找不到任何空值,但我的代码给出了错误。
我不知道哪个屏幕实际上导致了错误,但肯定是这两个屏幕中的一个
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
import 'package:tajicEasy/ui/auth/landingPage.dart';
import 'mySharedPreferences.dart';
import 'onBoarding_page.dart';
class SplashScreen extends StatefulWidget {
@override
_SplashScreenState createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
@override
void initState() {
super.initState();
loadSplashScreen();
myAppState();
}
bool isFirstTimeOpen = false;
myAppState() {
MySharedPreferences.instance
.getBooleanValue("firstTimeOpen")
.then((value) => setState(() {
isFirstTimeOpen = value;
}));
}
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Center(
child: Image.asset(
"assets/images/logo.png",
width: double.infinity, …Run Code Online (Sandbox Code Playgroud) 我正在使用 firebase 开发一个 flutter 项目。我目前正在 MacBook 上进行开发,使用模拟的 iPhone(以防万一这是相关的)。我能够运行我的应用程序,但这样做时,它只是一个永远不会消失的白色空白屏幕,了解这种情况在 Chrome 和模拟 Android 设备上发生也可能是相关的。查看窗口run,我可以看到出现以下错误:
Launching lib/main.dart on iPhone 13 in debug mode...\nRunning Xcode build...\nXcode build done. 28.4s\nDebug service listening on ws://127.0.0.1:61474/fF4XR-ozS5s=/ws\nSyncing files to device iPhone 13...\n[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: Null check operator used on a null value\n#0 MethodChannel.binaryMessenger (package:flutter/src/services/platform_channel.dart:121:86)\n#1 MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:146:36)\n#2 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)\n#3 MethodChannel.invokeListMethod (package:flutter/src/services/platform_channel.dart:342:41)\n#4 MethodChannelFirebase._initializeCore (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:31:37)\n#5 MethodChannelFirebase.initializeApp (package:firebase_core_platform_interface/src/method_channel/method_channel_firebase.dart:73:13)\n#6 Firebase.initializeApp (package:firebase_core/src/firebase.dart:42:47)\n#7 main (package:we_rise/main.dart:8:18)\n#8 _runMainZoned.<anonymous closure>.<anonymous closure> (dart:ui/hooks.dart:145:25)\n#9 _rootRun (dart:async/zon<\xe2\x80\xa6>\nRun Code Online (Sandbox Code Playgroud)\n由于我还是个新手,所以我无法完全理解出了什么问题,或者我在这里看到了什么。请在下面找到我的main.dart文件代码:
Launching lib/main.dart on iPhone 13 in …Run Code Online (Sandbox Code Playgroud) 我正在研究flutter,我遇到了一个问题,但我无法解决它。我试图根据一些代码制作一个计算器,并出现此错误
无法无条件调用方法“validate”,因为接收者可能为“null”。尝试使调用成为有条件的(使用“?.”)或向目标添加空检查(“!”)。
这是代码
import 'package:flutter/material.dart';
void main() {
runApp(MaterialApp(home: Home()));
}
class Home extends StatefulWidget {
@override
_HomeState createState() => _HomeState();
}
class _HomeState extends State<Home> {
TextEditingController pesoController = TextEditingController();
TextEditingController alturaController = TextEditingController();
String _info = "Informe seus dados";
GlobalKey<FormState> _formKey = GlobalKey<FormState>();
void _reset() {
setState(() {
pesoController.text = "";
alturaController.text = "";
_info = "Informe seus dados";
});
}
void _calculate() {
double peso = double.parse(pesoController.text);
double altura = double.parse(alturaController.text) / 100;
double imc = peso …Run Code Online (Sandbox Code Playgroud)