Jaime Blasco
Committed by GitHub

Bugfixes for ScrollController and improve compatibly with CupertinoApp/WidgetsApp

Merge pull request #7 from bierbaumtim/master
Bugfixes for ScrollController and improvements to compatibly with CupertinoApp/WidgetsApp
... ... @@ -4,4 +4,6 @@
## [0.1.4] - Clean code and fix small bugs
## [0.1.5] - Bugfixes
- fix assertion in CupertinoBottomSheet and BottomSheetRoute when using the CupetinoApp or WidgetsApp as root
- fix assertion when scrollController isn't used by the builder
\ No newline at end of file
... ...
... ... @@ -231,6 +231,8 @@ class _ModalBottomSheetState extends State<ModalBottomSheet>
void _handleScrollUpdate(ScrollNotification notification) {
if (notification.metrics.pixels <= notification.metrics.minScrollExtent) {
//Check if listener is same from scrollController
if (!_scrollController.hasClients) return;
if (_scrollController.position.pixels != notification.metrics.pixels) {
return;
}
... ...
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import '../modal_bottom_sheet.dart';
... ... @@ -32,15 +33,18 @@ class _ModalBottomSheet<T> extends StatefulWidget {
}
class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
String _getRouteLabel(MaterialLocalizations localizations) {
final platform = Theme.of(context).platform;
String _getRouteLabel() {
final platform = Theme.of(context)?.platform ?? defaultTargetPlatform;
switch (platform) {
case TargetPlatform.iOS:
return '';
case TargetPlatform.android:
case TargetPlatform.fuchsia:
return localizations.dialogLabel;
break;
if (Localizations.of(context, MaterialLocalizations) != null) {
return MaterialLocalizations.of(context).dialogLabel;
} else {
return DefaultMaterialLocalizations().dialogLabel;
}
}
return null;
}
... ... @@ -64,9 +68,6 @@ class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
@override
Widget build(BuildContext context) {
assert(debugCheckHasMediaQuery(context));
assert(debugCheckHasMaterialLocalizations(context));
final localizations = MaterialLocalizations.of(context);
final routeLabel = _getRouteLabel(localizations);
return AnimatedBuilder(
animation: widget.route._animationController,
... ... @@ -76,7 +77,7 @@ class _ModalBottomSheetState<T> extends State<_ModalBottomSheet<T>> {
return Semantics(
scopesRoute: true,
namesRoute: true,
label: routeLabel,
label: _getRouteLabel(),
explicitChildNodes: true,
child: ModalBottomSheet(
expanded: widget.route.expanded,
... ...
... ... @@ -4,10 +4,15 @@
import 'dart:async';
import 'package:flutter/cupertino.dart';
import 'package:flutter/cupertino.dart' show CupertinoTheme;
import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/material.dart'
show
Colors,
Theme,
MaterialLocalizations,
debugCheckHasMaterialLocalizations;
import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
... ... @@ -78,7 +83,13 @@ Future<T> showCupertinoModalBottomSheet<T>({
assert(useRootNavigator != null);
assert(enableDrag != null);
assert(debugCheckHasMediaQuery(context));
assert(debugCheckHasMaterialLocalizations(context));
final hasMaterialLocalizations =
Localizations.of<MaterialLocalizations>(context, MaterialLocalizations) !=
null;
final barrierLabel = hasMaterialLocalizations
? MaterialLocalizations.of(context).modalBarrierDismissLabel
: '';
final result = await Navigator.of(context, rootNavigator: useRootNavigator)
.push(CupertinoModalBottomSheetRoute<T>(
builder: builder,
... ... @@ -88,7 +99,7 @@ Future<T> showCupertinoModalBottomSheet<T>({
),
secondAnimationController: secondAnimation,
expanded: expand,
barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
barrierLabel: barrierLabel,
elevation: elevation,
bounce: bounce,
shape: shape,
... ... @@ -264,7 +275,12 @@ class CupertinoScaffold extends StatefulWidget {
assert(useRootNavigator != null);
assert(enableDrag != null);
assert(debugCheckHasMediaQuery(context));
final isCupertinoApp = Theme.of(context, shadowThemeOnly: true) == null;
String barrierLabel = '';
if (!isCupertinoApp) {
assert(debugCheckHasMaterialLocalizations(context));
barrierLabel = MaterialLocalizations.of(context).modalBarrierDismissLabel;
}
final result = await Navigator.of(context, rootNavigator: useRootNavigator)
.push(CupertinoModalBottomSheetRoute<T>(
builder: builder,
... ... @@ -274,7 +290,7 @@ class CupertinoScaffold extends StatefulWidget {
backgroundColor: backgroundColor,
),
expanded: expand,
barrierLabel: MaterialLocalizations.of(context).modalBarrierDismissLabel,
barrierLabel: barrierLabel,
bounce: bounce,
isDismissible: isDismissible ?? expand == false ? true : false,
modalBarrierColor: barrierColor ?? Colors.black12,
... ...
name: modal_bottom_sheet
description: 'Create awesome and powerful modal bottom sheets. Material, Cupertino or create your own'
version: 0.1.4
version: 0.1.5
homepage: 'https://github.com/jamesblasco/modal_bottom_sheet'
environment:
... ...