modal_with_navigator.dart 2.31 KB

import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';

class ModalWithNavigator extends StatelessWidget {
  final ScrollController scrollController;

  const ModalWithNavigator({Key key, this.scrollController}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return Material( child: Navigator(
          onGenerateRoute: (_) => MaterialPageRoute(
              builder: (context) => Builder(
                  builder: (context) => CupertinoPageScaffold(
                    navigationBar: CupertinoNavigationBar(
                        leading: Container(), middle: Text('Modal Page')),
                    child: SafeArea(
                      bottom: false,
                      child: ListView(
                        shrinkWrap: true,
                        controller: scrollController,
                        children: ListTile.divideTiles(
                          context: context,
                          tiles: List.generate(
                              100,
                                  (index) => ListTile(
                                title: Text('Item'),
                                onTap: () {
                                  Navigator.of(context).push(
                                      MaterialPageRoute(
                                          builder: (context) =>
                                              CupertinoPageScaffold(
                                                  navigationBar:
                                                  CupertinoNavigationBar(
                                                    middle: Text(
                                                        'New Page'),
                                                  ),
                                                  child: Stack(
                                                    fit:
                                                    StackFit.expand,
                                                    children: <
                                                        Widget>[],
                                                  ))));
                                },
                              )),
                        ).toList(),
                      ),
                    ),
                  ),
                ),
          ),)
    );
  }
}