Как перейти к другому экрану после успешного состояния в флаттере blo c? - PullRequest
0 голосов
/ 03 мая 2020

Я хочу, если статус успеха перемещается на другой экран с помощью навигации pu sh, но результаты переходят на следующую страницу, но повторение не прекращается. процесс переключения между страницами повторяется. как сделать так, чтобы процесс смены страниц не повторялся ??

body: StreamBuilder<ApiResponse<PostpaidInquiry>>(
          stream: inquirPostpaid.subject,
          builder: (context, snapshot) {
            if (snapshot.hasData) {
              switch (snapshot.data.status) {
                case Status.LOADING:
                  _onWidgetDidBuild((){
                    Scaffold.of(context).showSnackBar(
                      SnackBar(
                        content: Row(
                          mainAxisAlignment: MainAxisAlignment.spaceBetween,
                          children: [
                            Text(snapshot.data.message),
                            CircularProgressIndicator(),
                          ],
                        ),
                        backgroundColor: Colors.black,
                      ),
                    );
                  });
                  break;
                case Status.COMPLETED:
                  _onWidgetDidBuild(() {
                    AppRoutes.push(context, PlnPostpaidInquiryPage());
                  });
                  break;
                case Status.ERROR:
                  _onWidgetDidBuild(() {
                    Scaffold.of(context).showSnackBar(SnackBar(
                      content: Text('${snapshot.data.message}'),
                      backgroundColor: Colors.red,
                    ));
                  });
                  break;
              }
            }
            return _buildForm();
          },
        ),

Я использовал этот метод, чтобы помочь go перейти на другую страницу:

void _onWidgetDidBuild(Function callback) {
    WidgetsBinding.instance.addPostFrameCallback((_) {
      callback();
    });
  }
...