[英]The parameter can't have a value of null when 'required' is not used
我沒有使用required
關鍵字,但它顯示參數不能具有 null 值。 我想我將該值指定為 Widget 類型的列
錯誤:
The parameter 'cardChild' can't have a value of 'null' because of its type, but the implicit default value is 'null'. (missing_default_value_for_parameter at [bmi_calculator] lib\state_page.dart:97)**
代碼在下面
import 'package:flutter/material.dart';
import 'package:font_awesome_flutter/font_awesome_flutter.dart';
const bottomContainerHeight = 80.0;
const activeCodeColor = Color(0xFF272B4D);
const bottomContainerColour = Colors.pink;
class InputPage extends StatefulWidget {
@override
_InputPageState createState() => _InputPageState();
}
class _InputPageState extends State<InputPage> {
@override
Widget build(BuildContext context) {
// This method is rerun every time setState is called, for instance as done
// by the _incrementCounter method above.
return Scaffold(
backgroundColor: Color(0xFF0C1135),
appBar: AppBar(
backgroundColor: Color(0xFF111639),
title: Center(
child: Text('BMI CAlCULATOR'),
),
),
body: Column(
children: <Widget>[
Expanded(
child: Row(
children: <Widget>[
Expanded(
child: ReusableCode(
colour: activeCodeColor,
cardChild: Column(
children: <Widget>[
Icon(
FontAwesomeIcons.mars,
size: 80,
),
SizedBox(
height: 15.0,
),
Text(
'MALE',
style: TextStyle(
color: Color(0xFF8D8E98),
),
),
],
),
),
),
Expanded(
child: ReusableCode(
colour: activeCodeColor,
),
),
],
),
),
Expanded(
child: ReusableCode(
colour: activeCodeColor,
),
),
Expanded(
child: Row(
children: <Widget>[
Expanded(
child: ReusableCode(
colour: activeCodeColor,
),
),
Expanded(
child: ReusableCode(
colour: activeCodeColor,
),
),
],
),
),
Container(
width: double.infinity,
height: bottomContainerHeight,
margin: EdgeInsets.only(top: 10.0),
decoration: BoxDecoration(
color: bottomContainerColour,
),
),
],
),
);
}
}
class ReusableCode extends StatelessWidget {
ReusableCode({required this.colour, this.cardChild});
final Color colour;
final Widget cardChild;
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(10.0),
decoration: BoxDecoration(
color: colour,
borderRadius: BorderRadius.circular(10.0),
),
);
}
}
如果您使用的是基於最新 SDK 的空安全,那么您必須使用?
問題運算符,那么您不需要required
關鍵字。
您可以執行以下操作:
class ReusableCode extends StatelessWidget {
ReusableCode({this.colour, this.cardChild});
final Color? colour;
final Widget? cardChild;
@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.all(10.0),
decoration: BoxDecoration(
color: colour,
borderRadius: BorderRadius.circular(10.0),
),
);
}
}
發生此錯誤是因為您將cardChild
聲明cardChild
不可為空,但也聲明為沒有default
值的optional
參數。 這意味着cardChild
可以為 null,這就是發生錯誤的原因。 要解決此問題,請聲明您的cardChild
可為空,但如果cardChild
為 null,請確保您處理這種情況
class ReusableCode extends StatelessWidget {
ReusableCode({required this.colour, this.cardChild});
final Color colour;
final Widget? cardChild;
@override
...
}
}
或設置required
關鍵字
class ReusableCode extends StatelessWidget {
ReusableCode({required this.colour, required this.cardChild});
final Color colour;
final Widget? cardChild;
...
}
}
或為cardChild
設置default
值。
class ReusableCode extends StatelessWidget {
ReusableCode({required this.colour, this.cardChild = Container()});
final Color colour;
final Widget? cardChild;
...
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.