后退按钮后颤振处理状态

时间:2020-09-05 04:31:36

标签: flutter

我有一个文章页面,其中包含2个部分

  • 用于订阅/取消订阅发布者的按钮(可以使用cubit正常工作)
  • 相关新闻(单击相关新闻将在现有新闻页面上推新文章页面)

这里是订阅按钮的肘部

class SubscriptionCubit extends Cubit<SubscriptionState> {
  final ArticleDataSource _articleDataSource;

  SubscriptionCubit(this._articleDataSource, bool subscribed)
      : super(SubscriptionStatus(subscribed));

  void toggle(String publisherId) async {
    emit(SubscriptionLoading());
    bool isSubscribed = await _articleDataSource.followPublisher(publisherId);
    emit(SubscriptionStatus(isSubscribed));
  }
}

我的文章页面

class ArticlePage extends StatelessWidget {
  final String timezone = DateTime.now().timeZoneName;
  final Duration timezoneOffset = DateTime.now().timeZoneOffset;
  final String id;

  ArticlePage({Key key, @required this.id}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return SafeArea(
      child: Container(
        child: BlocProvider<ArticleBloc>(
          create: (context) => ArticleBloc(
              articleDataSource:
              RepositoryProvider.of<ArticleDataSource>(context),
              articleId: id)
            ..add(Fetch(id: this.id)),
          child: BlocBuilder<ArticleBloc, ArticleState>(
            builder: (context, state) {
              if (state is ArticleLoaded) {
                return drawArticle(context, state);
              } else {
                return Center(
                  child: CircularProgressIndicator(
                    backgroundColor: Colors.white,
                  ),
                );
              }
            },
          ),
        ),
      ),
    );
  }
}

我面临的问题是以下情况:

  1. 发布者A 中转到文章A1 (目前我尚未订阅)
  2. 在“相关新闻”部分,我点击了第A2条(来自相同的发布商A
  3. 我按下了订阅按钮(按钮已更新为subscribed
  4. 然后我按下了(默认)后退按钮,现在我回到了Article A1

问题在于此屏幕上显示的按钮仍然是旧的unsubsribed而不是subscribed

使用GIF更新

enter image description here

按下后退按钮后,如何更新“旧”订阅按钮?

0 个答案:

没有答案