我正在尝试创建一个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

我应该如何更改我的代码?

最佳答案

您需要传递字符串,因为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())));
  }
}

关于dart - 如何在StatefulWidget上使用构建器函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54923863/

10-09 04:20