Jaime Blasco

Add new example

@@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; @@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
4 4
5 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart'; 5 import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
6 6
  7 +import 'modals/floating_modal.dart';
7 import 'modals/modal_complex_all.dart'; 8 import 'modals/modal_complex_all.dart';
8 import 'modals/modal_fit.dart'; 9 import 'modals/modal_fit.dart';
9 import 'modals/modal_inside_modal.dart'; 10 import 'modals/modal_inside_modal.dart';
@@ -142,6 +143,13 @@ class _MyHomePageState extends State<MyHomePage> { @@ -142,6 +143,13 @@ class _MyHomePageState extends State<MyHomePage> {
142 scrollController: scrollController), 143 scrollController: scrollController),
143 )), 144 )),
144 ListTile( 145 ListTile(
  146 + title: Text('Float Modal'),
  147 + onTap: () => showFloatingModalBottomSheet(
  148 + context: context,
  149 + builder: (context, scrollController) =>
  150 + ModalFit(scrollController: scrollController),
  151 + )),
  152 + ListTile(
145 title: Text('Cupertino Modal fit'), 153 title: Text('Cupertino Modal fit'),
146 onTap: () => showCupertinoModalBottomSheet( 154 onTap: () => showCupertinoModalBottomSheet(
147 expand: false, 155 expand: false,
  1 +import 'dart:math';
  2 +
  3 +import 'package:flutter/material.dart';
  4 +import 'package:flutter/services.dart';
  5 +import 'package:flutter/widgets.dart';
  6 +import 'package:modal_bottom_sheet/modal_bottom_sheet.dart';
  7 +
  8 +class FloatingModal extends StatelessWidget {
  9 + final Widget child;
  10 + final Color backgroundColor;
  11 +
  12 + const FloatingModal({Key key, this.child, this.backgroundColor})
  13 + : super(key: key);
  14 +
  15 + @override
  16 + Widget build(BuildContext context) {
  17 + return SafeArea(
  18 + child: Padding(
  19 + padding: EdgeInsets.symmetric(horizontal: 20),
  20 + child: Material(
  21 + color: backgroundColor,
  22 + clipBehavior: Clip.antiAlias,
  23 + borderRadius: BorderRadius.circular(12),
  24 + child: child,
  25 + ),
  26 + ),
  27 + );
  28 + }
  29 +}
  30 +
  31 +Future<T> showFloatingModalBottomSheet<T>({
  32 + @required BuildContext context,
  33 + @required ScrollWidgetBuilder builder,
  34 + Color backgroundColor,
  35 +}) async {
  36 + final result = await showCustomModalBottomSheet(
  37 + context: context,
  38 + builder: builder,
  39 + containerWidget: (_, animation, child) => FloatingModal(
  40 + child: child,
  41 + ),
  42 + expand: false);
  43 +
  44 + return result;
  45 +}