如何动态传递参数?

时间:2019-07-20 11:53:21

标签: dynamic flutter dart widget

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

Grouped_object

2 个答案:

答案 0 :(得分:0)

您不能直接在Scaffold中直接调用 Header 类。您必须将其分配给Scaffold的某些属性,例如

Scaffold(
body: Header("OK", "Page1"),
);

,您还可以尝试使用 widget.variable_name 而不是使用美元符号来调用变量值。

Text(widget.title,),

RaisedButton(
child: Text(
widget.buttonTitle,
),

答案 1 :(得分:0)

我认为您想制作可重用的小部件,您犯了一些错误,因此可以将其与以下代码进行比较。下面是完整的工作代码。

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"),
      ),
    );
  }
}