我正在尝试在标题旁边创建一个按钮,但是我没有在开始时传递内容,而是尝试动态地进行操作,因此我使用了构造函数,但没有获得在调用构造函数时传递的值,而是不断获取空值。那么,如何使用构造函数或其他任何方式动态传递参数?这是我正在使用的课程
class Header extends StatefulWidget {
String buttonTitle;
String title;
Header(String buttonTitle , String title) //the constructor I'm gonna
call
{
this.buttonTitle = buttonTitle;
this.title = title;
}
@override
HeaderState createState() => HeaderState(buttonTitle , title);
}
class HeaderState extends State<Header> {
String buttonTitle;
String title;
HeaderState(String buttonTitle , String title)
{
this.buttonTitle = buttonTitle;
this.title = title;
}
@override
Widget build(BuildContext context) {
//some code
Text("$title", //the first parameter passed dynamically),
RaisedButton(
child: Text(
"$buttonTitle", //the second parameter
),
}
class FirstScreen extends StatefulWidget {
@override
FirstScreenState createState() => FirstScreenState();
}
class FirstScreenState extends State<FirstScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
Header("OK", "Page1"),//constructor is called here
);
}
}
我认为您想制作可重用的小部件,您犯了一些错误,因此可以将其与以下代码进行比较。下面是完整的工作代码。
import 'package:flutter/material.dart';
void main() => runApp(FirstScreen());
class Header extends StatefulWidget {
final String buttonTitle;
final String title;
Header({this.buttonTitle, this.title});
@override
HeaderState createState() => HeaderState();
}
class HeaderState extends State<Header> {
String buttonTitle;
String title;
@override
Widget build(BuildContext context) {
return Row(children: [
Text("${widget.title}"),
RaisedButton(
child: Text("${widget.buttonTitle}"),
onPressed: () {},
),
]);
}
}
class FirstScreen extends StatefulWidget {
@override
FirstScreenState createState() => FirstScreenState();
}
class FirstScreenState extends State<FirstScreen> {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Header(buttonTitle: "OK", title: "Page1"),
),
body: Header(buttonTitle: "Reuse", title: "Reuse in body"),
),
);
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句