Флаттер показывает модальный нижний лист после сборки

Как сказано в заголовке, у меня есть параметр String, и когда я загружаю виджет Home Stateful, я хотел бы открыть этот нижний лист, если параметр не равен нулю.

Как я понял не могу позвонить showModalBottomSheet() в функции сборки виджета Home, потому что он не может начать построение нижнего листа при создании виджета Home, поэтому есть ли способ вызвать это сразу после сборки домашнего виджета?

2 ответа

Решение

Одним из решений может быть использование функции addPostFrameCallback экземпляра SchedulerBinding. Таким образом, вы можете вызвать showModalBottomSheet после создания виджета Home.

import 'package:flutter/scheduler.dart';

...

  @override
  Widget build(BuildContext context) {
    SchedulerBinding.instance.addPostFrameCallback((timeStamp) {
      showModalBottomSheet<void>(
        context: context,
        builder: (BuildContext context) {
          //Your builder code
        },
      );
    });

    //Return widgets tree for Home
  }

Вот один способ:

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
      showModalBottomSheet(
        context: context, 
        builder: (BuildContext context) {
          return Container(
            child: Text('heyooo'),
          );
        }
      );
    });
    return Scaffold(
      appBar: AppBar(),
      body: Container(),
    );
  }
}
Другие вопросы по тегам