flutter blo c управление состоянием не меняет пользовательский интерфейс при вызове события - PullRequest
0 голосов
/ 06 марта 2020

Я новичок во флаттере. Моя проблема в том, что когда я изменяю состояние своего приложения, пользовательский интерфейс не может обновиться. пользовательский интерфейс изменился только когда я использую горячую перезагрузку.

это мой код состояния:

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 работает правильно.

, пожалуйста, помогите мне

спасибо.

...