1

正如标题所说,我有一个字符串参数,当我加载 Home Stateful Widget 时,如果参数不为空,我想打开这个底页。

据我了解,我无法调用showModalBottomSheet()Home 小部件的构建功能,因为它在构建 Home Widget 时无法开始构建底部工作表,那么,有没有办法在构建 Home Widget 后立即调用它?

4

2 回答 2

4

其中一种解决方案可能是使用 SchedulerBinding 实例的 addPostFrameCallback 函数。这样,您可以在构建 Home 小部件后调用 showModalBottomSheet。

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
  }
于 2020-11-05T22:16:04.493 回答
1

这是一种方法:

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(),
    );
  }
}
于 2020-11-05T22:07:50.497 回答