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