如何动态传递参数?

开发者

我正在尝试在标题旁边创建一个按钮,但是我没有在开始时传递内容,而是尝试动态地进行操作,因此我使用了构造函数,但没有获得在调用构造函数时传递的值,而是不断获取空值。那么,如何使用构造函数或其他任何方式动态传递参数?这是我正在使用的课程

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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章