Show alert dialog on app main screen load automatically in flutter

后端 未结 5 1359
遇见更好的自我
遇见更好的自我 2020-12-08 22:09

I want to show alert dialog based on a condition. Not based on user interaction such as button press event.

If a flag is set in app state data alert dialog is shown

5条回答
  •  眼角桃花
    2020-12-08 23:00

    You have to wrap the content inside another Widget (preferably Stateless).

    Example:

    Change From:

      import 'package:flutter/material.dart';
    
      void main() {
        runApp(new MyApp());
      }
    
      class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return MaterialApp(
              title: 'Trial',
              home: Scaffold(
                  appBar: AppBar(title: Text('List scroll')),
                  body: Container(
                    child: Text("Hello world"),
                  )));
        }
      }
    

    to this:

      import 'dart:async';
      import 'package:flutter/material.dart';
    
      void main() {
        runApp(new MyApp());
      }
    
      class MyApp extends StatelessWidget {
        @override
        Widget build(BuildContext context) {
          return MaterialApp(
              title: 'Trial',
              home: Scaffold(
                  appBar: AppBar(title: Text('List scroll')), body: new MyHome()));
        }
      }
    
      class MyHome extends StatelessWidget { // Wrapper Widget
        @override
        Widget build(BuildContext context) {
          Future.delayed(Duration.zero, () => showAlert(context));
          return Container(
            child: Text("Hello world"),
          );
        }
    
        void showAlert(BuildContext context) {
          showDialog(
              context: context,
              builder: (context) => AlertDialog(
                    content: Text("hi"),
                  ));
        }
      }
    

    Note: Refer here for wrapping show alert inside Future.delayed(Duration.zero,..)

提交回复
热议问题