如何在StatefulWidget上使用构建器函数

时间:2019-02-28 10:47:34

标签: dart flutter

我正在尝试创建一个Flutter应用。我正在尝试将构建器函数用于英雄标签,如下所示:

import 'package:flutter/material.dart';

void main() => runApp(Page());

class Page extends StatefulWidget {

  final String open;

  Page({this.open});

  @override
  PageState createState() => PageState();

}

class PageState extends State<Page> {

  String open;

  @override
  Widget build(BuildContext context) {

    return MaterialApp (
      home: Scaffold (
        body: Hero (
          tag: open,
          child: Material ()
        )
      )
    );
  }

}

但是这段代码给我说了一个错误

Failed assertion: line 128 pos 15: 'tag != null': is not true

我应该如何更改代码?

1 个答案:

答案 0 :(得分:1)

您需要传递字符串,因为Page()需要一个字符串,因此可以将其分配给hero标签。

在状态下,您可以使用widget.方法访问该字符串。

import 'package:flutter/material.dart';

void main() => runApp(Page(
      open: 'open',  // Add this
    ));

class Page extends StatefulWidget {
  final String open;

  Page({this.open});

  @override
  PageState createState() => PageState();
}

class PageState extends State<Page> {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: Scaffold(body: Hero(tag: widget.open, child: Material())));
  }
}