FLUTTER:如何在应用程序开始之前显示对话框?

Ara*_*yan 6 dart flutter

我想在打开应用程序之前显示一个确认警报对话框,有人可以告诉我如何在颤振中实现这一点吗?

showDialog() 方法需要一个上下文,因此我应该将它与 buildContext 放在某个地方,我假设在应用程序的构建方法中,但是如何在屏幕上构建实际布局之前触发对话框?

Fig*_*gör 7

在您initState可以添加您的回调,它将显示您的对话框,WidgetsBinding.instance.addPostFrameCallback该对话框将在布局后立即显示。您可以根据对话框结果更新布局状态。

class HomePageState extends State<HomePage> {

      @override
      void initState() {
        super.initState();
        WidgetsBinding.instance
            .addPostFrameCallback((_) => showDialog(...));
      }


      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: Text('HomePage'),
          ),
          body: Container(),
        );
      }
Run Code Online (Sandbox Code Playgroud)


Ara*_*yan 5

下面的代码有效,我想这就是答案

  @override
  Widget build(BuildContext context) {
    Future.delayed(Duration.zero, () => showAlert(context));
    return new WhateverLayoutYouWantToBeDisplayed();
  }

  void showAlert(BuildContext context) {
    showDialog(
      child: new WhateverCustomDialogYouHave(),
        context: context);   
  }
Run Code Online (Sandbox Code Playgroud)

  • 从“build”方法调用“showDialog”不是一个好主意,因为“build”在整个屏幕生命周期中可以被多次调用。 (8认同)