Toggle navigation
Toggle navigation
This project
Loading...
Sign in
flutter_package
/
modal_bottom_sheet
Go to a project
Toggle navigation
Projects
Groups
Snippets
Help
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
Alex Li
2022-08-28 18:23:25 +0800
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
9a87b17b8d127cbd18f01b97f7a9822add54b86c
9a87b17b
1 parent
1f27e5d7
✅ Add test
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
147 additions
and
1 deletions
test/bottom_sheet_test.dart
test/bottom_sheet_test.dart
View file @
9a87b17
import
'package:flutter/cupertino.dart'
;
import
'package:flutter/material.dart'
;
import
'package:flutter_test/flutter_test.dart'
;
import
'package:modal_bottom_sheet/modal_bottom_sheet.dart'
;
void
main
(
)
{
test
(
'adds one to input values'
,
()
{});
group
(
'Route.mainState are well-controlled by `mainState`'
,
()
{
testWidgets
(
'with showCupertinoModalBottomSheet'
,
(
tester
)
async
{
int
_initState
=
0
,
_dispose
=
0
;
await
_pumpWidget
(
tester:
tester
,
onPressed:
(
context
)
=>
showCupertinoModalBottomSheet
(
context:
context
,
builder:
(
_
)
=>
_TestWidget
(
onInitState:
()
=>
_initState
++,
onDispose:
()
=>
_dispose
++,
),
),
);
expect
(
_initState
,
0
);
await
tester
.
tap
(
_textButtonWithText
(
'Press me'
));
await
tester
.
pumpAndSettle
();
expect
(
_initState
,
1
);
expect
(
_dispose
,
0
);
await
tester
.
tap
(
_textButtonWithText
(
'TestWidget push'
));
await
tester
.
pumpAndSettle
();
expect
(
_initState
,
1
);
expect
(
_dispose
,
0
);
await
tester
.
tap
(
_textButtonWithText
(
'TestWidget pushed pop'
));
await
tester
.
pumpAndSettle
();
expect
(
_initState
,
1
);
expect
(
_dispose
,
0
);
await
tester
.
tap
(
_textButtonWithText
(
'TestWidget pop'
));
await
tester
.
pumpAndSettle
();
expect
(
_initState
,
1
);
expect
(
_dispose
,
1
);
});
},
);
}
Future
<
void
>
_pumpWidget
({
required
WidgetTester
tester
,
required
void
Function
(
BuildContext
context
)
onPressed
,
})
{
return
tester
.
pumpWidget
(
MaterialApp
(
home:
Builder
(
builder:
(
context
)
=>
Scaffold
(
body:
Center
(
child:
TextButton
(
onPressed:
()
=>
onPressed
(
context
),
child:
Text
(
'Press me'
),
),
),
),
),
),
);
}
Finder
_textButtonWithText
(
String
text
)
{
return
find
.
widgetWithText
(
TextButton
,
text
);
}
class
_TestWidget
extends
StatefulWidget
{
const
_TestWidget
({
Key
?
key
,
this
.
onInitState
,
this
.
onDispose
,
})
:
super
(
key:
key
);
final
VoidCallback
?
onInitState
;
final
VoidCallback
?
onDispose
;
@override
State
<
_TestWidget
>
createState
()
=>
_TestWidgetState
();
}
class
_TestWidgetState
extends
State
<
_TestWidget
>
{
@override
void
initState
()
{
super
.
initState
();
widget
.
onInitState
?.
call
();
}
@override
void
dispose
()
{
widget
.
onDispose
?.
call
();
super
.
dispose
();
}
@override
Widget
build
(
BuildContext
context
)
{
return
Scaffold
(
body:
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
children:
[
TextButton
(
onPressed:
()
=>
Navigator
.
of
(
context
).
push
(
defaultPageRoute
(
targetPlatform:
Theme
.
of
(
context
).
platform
,
builder:
(
context
)
=>
Scaffold
(
body:
Center
(
child:
TextButton
(
onPressed:
()
=>
Navigator
.
of
(
context
).
pop
(),
child:
Text
(
'TestWidget pushed pop'
),
),
),
),
),
),
child:
Text
(
'TestWidget push'
),
),
TextButton
(
onPressed:
()
=>
Navigator
.
of
(
context
).
pop
(),
child:
Text
(
'TestWidget pop'
),
),
],
),
);
}
}
PageRoute
<
T
>
defaultPageRoute
<
T
>({
required
TargetPlatform
targetPlatform
,
required
WidgetBuilder
builder
,
RouteSettings
?
settings
,
bool
maintainState
=
true
,
bool
fullscreenDialog
=
false
,
})
{
switch
(
targetPlatform
)
{
case
TargetPlatform
.
iOS
:
case
TargetPlatform
.
macOS
:
return
CupertinoPageRoute
<
T
>(
builder:
builder
,
settings:
settings
,
maintainState:
maintainState
,
fullscreenDialog:
fullscreenDialog
,
);
default
:
return
MaterialPageRoute
<
T
>(
builder:
builder
,
settings:
settings
,
maintainState:
maintainState
,
fullscreenDialog:
fullscreenDialog
,
);
}
}
...
...
Please
register
or
login
to post a comment