Я новичок во флаттере. Моя проблема в том, что когда я изменяю состояние своего приложения, пользовательский интерфейс не может обновиться. пользовательский интерфейс изменился только когда я использую горячую перезагрузку.
это мой код состояния:
import 'package:flutter_audio_query/flutter_audio_query.dart';
class MusicState {
List<SongInfo> songs;
String songDisplayName = "";
MusicState._();
String get props => songDisplayName;
factory MusicState.initial() {
return MusicState._()..songs = new List<SongInfo>();
}
}
и это мой код события
abstract class MusicEvent{}
class GetMusic extends MusicEvent{
GetMusic();
}
class ChangeMusic extends MusicEvent{
final String songDisplayName;
ChangeMusic(this.songDisplayName);
}
также мой blo c код:
import 'package:bloc/bloc.dart';
import 'package:music_player/bloc/music_event.dart';
import 'package:music_player/bloc/music_state.dart';
import 'package:flutter_audio_query/flutter_audio_query.dart';
class MusicBloc extends Bloc<MusicEvent, MusicState> {
@override
MusicState get initialState => MusicState.initial();
@override
Stream<MusicState> mapEventToState(MusicEvent event) async* {
if (event is GetMusic) {
FlutterAudioQuery audioQuery = new FlutterAudioQuery();
state.songs = await audioQuery.getSongs();
yield state;
}
if (event is ChangeMusic) {
state.songDisplayName = event.songDisplayName;
yield state;
}
}
}
и это тот виджет, который я хочу изменить, но не могу изменить:
Widget build(BuildContext context) {
return BlocBuilder<MusicBloc,MusicState>(
builder: (context, state) {
return ListTile(
leading: CircleAvatar(
child: Text("state.songDisplayName[0]"),
),
title: Text(state.songDisplayName),
subtitle: Text(state.songDisplayName),
trailing: Icon(Icons.play_arrow),
);
},
);
}
также я проверил события, и я уверен, что События и Blo c работает правильно.
, пожалуйста, помогите мне
спасибо.