【发布时间】:2020-07-30 18:53:18
【问题描述】:
我有一个可以正常工作的音乐播放器,但我想将音乐播放器小部件放在 StreamBuilder 中,并有一个字符串作为要在流中播放的音乐的 url,并将该 url 传递给构造函数的音乐播放器。 因此,只要 url 流发生变化,音乐播放器内容就会发生变化。
我的简单音乐播放器url服务类:
class MusicPlayerURLService {
String url = '';
String get(){
return url;
}
void set(String newUrl) {
url = newUrl;
}
}
音乐播放器小部件的构造函数:
StreamBuilder(
stream: MusicPlayerURLService().get(),
builder: (BuildContext context, AsyncSnapshot snapshot) {
if (snapshot.connectionState == ConnectionState.active) {
var user = snapshot.data;
if (user == null) {
return Container(width: 20);
}
return MusicPlayer(url: snapshot.data.url);
}
return Container(width: 20);
}),
然后在另一个视图中,我将有一个按钮,它调用 MusicPlayerURLService 中的 set 方法并设置一个新的 URL。
目前,由于 url 服务中的 get 方法不是流,因此流构建器抛出错误。
我正在努力想出解决这个问题的一般想法。我可以以某种方式使用提供程序吗?
编辑
网址将来自像这样的按钮:
FlatButton(
onPressed: () => MusicPlayerURLService().set("songOneUrl"),
child: Text("Play Song One"),
)
【问题讨论】:
-
你从哪里得到这些网址?
-
它是否向你展示了一个未来?
-
@AbirAhsan
get()不返回未来,它返回一个字符串。 OP 发布了该代码。 -
@ChristopherMoore 点击时 url 将来自按钮小部件,我在帖子中放了一个示例代码
-
为什么每次使用
MusicPlayerURLService的其中一种方法时都要创建新的对象?