【发布时间】:2020-05-07 17:41:12
【问题描述】:
我在这样的有状态小部件中有一个事件名称列表
main.dart
class Fav extends StatefulWidget {
@override
_FavState createState() => _FavState();
}
class _FavState extends State<Fav> {
final PageController ctrl = PageController(viewportFraction: 0.8);
final Firestore db = Firestore.instance;
Stream slides;
var fav = ['3-Tech Event'];
.
.
.
在另一个页面上,我想添加一个字符串,比如说,
'5-Art Exhibit'
进入
var fav = ['3-Tech Event'];
得到最终结果
fav = ['3-Tech Event', '5-Art Exhibit'];
在上面的页面上。我怎么做?这是我的按钮代码
Event.dart
class Star extends StatefulWidget {
@override
_StarState createState() => _StarState();
}
class _StarState extends State<Star> {
Color _iconColor = Colors.grey;
@override
Widget build(BuildContext context) {
return Container(
padding: EdgeInsets.all(55.0),
child: Transform.scale(
scale: 2.0,
child: IconButton(
icon: Icon(
Icons.star,
color: _iconColor,
),
onPressed: () {
setState(() {
_iconColor = (_iconColor == Colors.yellow) ? Colors.grey : Colors.yellow;
});
})
),
);
}
}
提前谢谢你!
更新
我遵循@Viren V Varasadiya 的建议并将我的代码更新到此
main.dart
class Fav extends StatefulWidget {
@override
_FavState createState() => _FavState();
}
class _FavState extends State<Fav> {
var fav = ['3-Tech Event'];
updatedata(String item) {
setState(() {
fav.add(item);
});
}
在另一个文件上,我删除了 Star 类(因为它本来打算在另一个类中使用),它看起来像这样
class Event extends StatefulWidget {
final eventInfo;
Event({Key key, List eventInfo}) //I have to pass a list of data to this
: this.eventInfo = eventInfo, //page from another class
super(key: key);
final Function updatedata;
Event.addToFavWith({this.updatedata});
@override
_EventState createState() => _EventState();
}
class _EventState extends State<Event> {
Color _iconColor = Colors.grey;
@override
Widget build(BuildContext context) {
.
.
.
Container( //This used to be Container(child:Star())
child: InkWell(
child: Container(
padding: EdgeInsets.all(55.0),
child: Transform.scale(
scale: 2.0,
child: IconButton(
icon: Icon(
Icons.star,
color: _iconColor,
),
onPressed: () {
setState(() {
_iconColor = (_iconColor == Colors.yellow)
? Colors.grey
: Colors.yellow;
widget.updatedata(name);
});
})),
),
)),
现在我遇到了一些错误。
所有最终变量都必须初始化,但 'eventInfo' 不是。尝试 为该字段添加一个初始化器。
所有最终变量都必须初始化,但“updatedata”不是。尝试 为该字段添加一个初始化程序。
【问题讨论】:
-
让我更清楚。你想更新明星的最爱吗?你在那个类(fav)中使用星形小部件吗?如果是,那么也添加那部分代码。
-
当您导航到一个新函数时,您可以传递一个函数,该函数接受事件名称的参数并将其添加到列表中。在第二页可以调用这个函数参考
-
是的,我想通过按星形图标来更新收藏。小部件
Star不在Fav中,但它在单独的 dart 文件中。 @VirenVVarasadiya 如何从不同的 dart 文件中调用函数? @阿巴斯