inline_dialogs 1.0.3 copy "inline_dialogs: ^1.0.3" to clipboard
inline_dialogs: ^1.0.3 copied to clipboard

A simple Flutter package to implement inline dialogs which can be managed from the main program context. The dialog can be closed from the same code from which it was invoked.

example/lib/main.dart

import 'dart:async';

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:inline_dialogs/custom_utils/service_locator.dart';
import 'package:inline_dialogs/dialogs/manager.dart';
import 'package:inline_dialogs/dialogs/model.dart';
import 'package:inline_dialogs/dialogs/service.dart';

void main() {
  dialogSetupLocator();
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Inline Dialogs Demo',
      debugShowCheckedModeBanner: false,
      builder: (context, widget) => Navigator(
        onGenerateRoute: (settings) => MaterialPageRoute(
            builder: (context) => DialogManager(
                  child: widget,
                )),
      ),
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Inline Dialogs Demo'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _rightBtn, _leftBtn = "";
  bool _showOptionText = false, _showConfirmText = false, _confirmBtn;
  DialogService _dialogService = locator<DialogService>();
  Timer _counter;

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: RaisedButton(
                child: Text(" Option Dialog "),
                onPressed: () async {
                  setState(() {
                    _showOptionText = true;
                    _showConfirmText = false;
                    _rightBtn = null;
                    _leftBtn = null;
                  });
                  var _dialogResponse = await _dialogService.showDialog(
                      title: Icon(
                        Icons.code,
                        size: 50,
                        color: Colors.orange,
                      ),
                      content: Padding(
                        padding: const EdgeInsets.all(12.0),
                        child: Text(
                          "Sample option dialog",
                          style: Theme.of(context).textTheme.headline6,
                        ),
                      ),
                      dialogType: DialogType.option,
                      optionRight: "Right",
                      optionLeft: "Left");

                  setState(() {
                    _rightBtn = _dialogResponse.optionRight;
                    _leftBtn = _dialogResponse.optionLeft;
                  });
                },
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: RaisedButton(
                child: Text("Confirm Dialog"),
                onPressed: () async {
                  setState(() {
                    _showConfirmText = true;
                    _showOptionText = false;
                    _confirmBtn = false;
                  });
                  var _dialogResponse = await _dialogService.showDialog(
                      title: Icon(
                        Icons.done_outline,
                        size: 50,
                        color: Colors.green,
                      ),
                      content: Padding(
                        padding: const EdgeInsets.all(12.0),
                        child: Text(
                          "Sample confirm dialog",
                          style: Theme.of(context).textTheme.headline6,
                        ),
                      ),
                      dialogType: DialogType.confirm,
                      buttonText: "Done");

                  setState(() {
                    _confirmBtn = _dialogResponse.confirmed;
                  });
                },
              ),
            ),
            Padding(
              padding: const EdgeInsets.all(8.0),
              child: RaisedButton(
                child: Text(" Waiter Dialog  "),
                onPressed: () async {
                  setState(() {
                    _showConfirmText = false;
                    _showOptionText = false;
                  });
                  var _timer = Timer.periodic(Duration(seconds: 1), (timer) {
                    setState(() {
                      _counter = timer;
                    });
                  });
                  _dialogService.showDialog(
                      title: Text(
                        "Sample waiter dialog",
                        style: Theme.of(context).textTheme.headline6,
                      ),
                      content: Padding(
                        padding: const EdgeInsets.all(12.0),
                        child: CupertinoActivityIndicator(
                          radius: 20,
                        ),
                      ),
                      dialogType: DialogType.waiter);
                  await Future.delayed(Duration(seconds: 5));
                  _dialogService.dismissDialog();
                  _timer.cancel();
                },
              ),
            ),
            _showOptionText
                ? Padding(
                    padding: const EdgeInsets.only(top: 160.0),
                    child: Text(
                      'Left btn returns : $_leftBtn',
                      style: Theme.of(context).textTheme.headline6,
                      textAlign: TextAlign.center,
                    ),
                  )
                : Container(),
            _showOptionText
                ? Padding(
                    padding: const EdgeInsets.only(top: 10.0),
                    child: Text(
                      'Right btn Returns : $_rightBtn',
                      style: Theme.of(context).textTheme.headline6,
                      textAlign: TextAlign.center,
                    ),
                  )
                : Container(),
            _showConfirmText
                ? Padding(
                    padding: const EdgeInsets.only(top: 160.0),
                    child: Text(
                      'Confirm btn returns : $_confirmBtn',
                      style: Theme.of(context).textTheme.headline6,
                      textAlign: TextAlign.center,
                    ),
                  )
                : Container(),
            !_showConfirmText && !_showOptionText
                ? Padding(
                    padding: const EdgeInsets.only(top: 180.0),
                    child: Text(
                      'Counter: ${_counter?.tick}',
                      style: Theme.of(context).textTheme.headline4,
                      textAlign: TextAlign.center,
                    ),
                  )
                : Container(),
          ],
        ),
      ),
      // This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}
1
likes
40
pub points
0%
popularity

Publisher

unverified uploader

A simple Flutter package to implement inline dialogs which can be managed from the main program context. The dialog can be closed from the same code from which it was invoked.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (LICENSE)

Dependencies

flutter, get_it

More

Packages that depend on inline_dialogs