我正在尝试创建一个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
我应该如何更改代码?
答案 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())));
}
}