Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
322eb81a
Unverified
Commit
322eb81a
authored
May 03, 2018
by
Chris Bracken
Committed by
GitHub
May 03, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert longPress/Tap and Gallery changes (#17269)
Revert longPress/Tap and Gallery changes
parent
40ddf010
Changes
13
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
92 additions
and
383 deletions
+92
-383
demos.dart
examples/flutter_gallery/lib/gallery/demos.dart
+71
-63
home.dart
examples/flutter_gallery/lib/gallery/home.dart
+13
-20
transitions_perf_test.dart
...es/flutter_gallery/test_driver/transitions_perf_test.dart
+6
-6
feedback.dart
packages/flutter/lib/src/material/feedback.dart
+0
-4
toggleable.dart
packages/flutter/lib/src/material/toggleable.dart
+0
-1
object.dart
packages/flutter/lib/src/rendering/object.dart
+0
-19
semantics_event.dart
packages/flutter/lib/src/semantics/semantics_event.dart
+1
-27
semantics_service.dart
packages/flutter/lib/src/semantics/semantics_service.dart
+1
-2
checkbox_test.dart
packages/flutter/test/material/checkbox_test.dart
+0
-41
feedback_test.dart
packages/flutter/test/material/feedback_test.dart
+0
-69
radio_test.dart
packages/flutter/test/material/radio_test.dart
+0
-36
switch_test.dart
packages/flutter/test/material/switch_test.dart
+0
-46
tooltip_test.dart
packages/flutter/test/material/tooltip_test.dart
+0
-49
No files found.
examples/flutter_gallery/lib/gallery/demos.dart
View file @
322eb81a
This diff is collapsed.
Click to expand it.
examples/flutter_gallery/lib/gallery/home.dart
View file @
322eb81a
...
...
@@ -177,25 +177,6 @@ class _DemoItem extends StatelessWidget {
final
bool
isDark
=
theme
.
brightness
==
Brightness
.
dark
;
final
double
textScaleFactor
=
MediaQuery
.
of
(
context
)?.
textScaleFactor
??
1.0
;
final
List
<
Widget
>
titleChildren
=
<
Widget
>[
new
Text
(
demo
.
title
,
style:
theme
.
textTheme
.
subhead
.
copyWith
(
color:
isDark
?
Colors
.
white
:
const
Color
(
0xFF202124
),
),
),
];
if
(
demo
.
subtitle
!=
null
)
{
titleChildren
.
add
(
new
Text
(
demo
.
subtitle
,
style:
theme
.
textTheme
.
body1
.
copyWith
(
color:
isDark
?
Colors
.
white
:
const
Color
(
0xFF60646B
)
),
),
);
}
return
new
RawMaterialButton
(
padding:
EdgeInsets
.
zero
,
splashColor:
theme
.
primaryColor
.
withOpacity
(
0.12
),
...
...
@@ -221,7 +202,19 @@ class _DemoItem extends StatelessWidget {
child:
new
Column
(
mainAxisAlignment:
MainAxisAlignment
.
center
,
crossAxisAlignment:
CrossAxisAlignment
.
stretch
,
children:
titleChildren
,
children:
<
Widget
>[
new
Text
(
demo
.
title
,
style:
theme
.
textTheme
.
subhead
.
copyWith
(
color:
isDark
?
Colors
.
white
:
const
Color
(
0xFF202124
),
),
),
new
Text
(
demo
.
subtitle
,
style:
theme
.
textTheme
.
body1
.
copyWith
(
color:
isDark
?
Colors
.
white
:
const
Color
(
0xFF60646B
)),
),
],
),
),
const
SizedBox
(
width:
44.0
),
...
...
examples/flutter_gallery/test_driver/transitions_perf_test.dart
View file @
322eb81a
...
...
@@ -21,8 +21,8 @@ const FileSystem _fs = const LocalFileSystem();
// --trace-startup, as we do in this test, the VM stores trace events in an
// endless buffer instead of a ring buffer.
//
// These names must match GalleryItem titles from
kAllGalleryDemo
s
// in examples/flutter_gallery/lib/gallery
/demos
.dart
// These names must match GalleryItem titles from
kAllGalleryItem
s
// in examples/flutter_gallery/lib/gallery
.item
.dart
const
List
<
String
>
kProfiledDemos
=
const
<
String
>[
'Shrine'
,
'Contact profile'
,
...
...
@@ -31,14 +31,14 @@ const List<String> kProfiledDemos = const <String>[
'Buttons'
,
'Cards'
,
'Chips'
,
'
P
ickers'
,
'Dialog
s
'
,
'
Date and time p
ickers'
,
'Dialog'
,
];
// Demos that will be backed out of within FlutterDriver.runUnsynchronized();
//
// These names must match GalleryItem titles from
kAllGalleryDemo
s
// in examples/flutter_gallery/lib/gallery
/demos
.dart
// These names must match GalleryItem titles from
kAllGalleryItem
s
// in examples/flutter_gallery/lib/gallery
.item
.dart
const
List
<
String
>
kUnsynchronizedDemos
=
const
<
String
>[
'Progress indicators'
,
'Activity Indicator'
,
...
...
packages/flutter/lib/src/material/feedback.dart
View file @
322eb81a
...
...
@@ -4,8 +4,6 @@
import
'dart:async'
;
import
'package:flutter/rendering.dart'
;
import
'package:flutter/semantics.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter/widgets.dart'
;
...
...
@@ -88,7 +86,6 @@ class Feedback {
/// * [wrapForTap] to trigger platform-specific feedback before executing a
/// [GestureTapCallback].
static
Future
<
Null
>
forTap
(
BuildContext
context
)
async
{
context
.
findRenderObject
().
sendSemanticsEvent
(
const
TapSemanticEvent
());
switch
(
_platform
(
context
))
{
case
TargetPlatform
.
android
:
case
TargetPlatform
.
fuchsia
:
...
...
@@ -127,7 +124,6 @@ class Feedback {
/// * [wrapForLongPress] to trigger platform-specific feedback before
/// executing a [GestureLongPressCallback].
static
Future
<
Null
>
forLongPress
(
BuildContext
context
)
{
context
.
findRenderObject
().
sendSemanticsEvent
(
const
LongPressSemanticsEvent
());
switch
(
_platform
(
context
))
{
case
TargetPlatform
.
android
:
case
TargetPlatform
.
fuchsia
:
...
...
packages/flutter/lib/src/material/toggleable.dart
View file @
322eb81a
...
...
@@ -285,7 +285,6 @@ abstract class RenderToggleable extends RenderConstrainedBox {
onChanged
(
false
);
break
;
}
sendSemanticsEvent
(
const
TapSemanticEvent
());
}
void
_handleTapUp
(
TapUpDetails
details
)
{
...
...
packages/flutter/lib/src/rendering/object.dart
View file @
322eb81a
...
...
@@ -2165,25 +2165,6 @@ abstract class RenderObject extends AbstractNode with DiagnosticableTreeMixin im
// Nothing to do by default.
}
/// Sends a [SemanticsEvent] associated with this render object's [SemanticsNode].
///
/// If this render object has no semantics information, the first parent
/// render object with a non-null semantic node is used.
///
/// If semantics are disabled, no events are dispatched.
///
/// See [SemanticsNode.sendEvent] for a full description of the behavior.
void
sendSemanticsEvent
(
SemanticsEvent
semanticsEvent
)
{
if
(
owner
.
semanticsOwner
==
null
)
return
;
if
(
_semantics
!=
null
)
{
_semantics
.
sendEvent
(
semanticsEvent
);
}
else
if
(
parent
!=
null
)
{
final
RenderObject
renderParent
=
parent
;
renderParent
.
sendSemanticsEvent
(
semanticsEvent
);
}
}
// Use [_semanticsConfiguration] to access.
SemanticsConfiguration
_cachedSemanticsConfiguration
;
...
...
packages/flutter/lib/src/semantics/semantics_event.dart
View file @
322eb81a
...
...
@@ -90,7 +90,7 @@ class AnnounceSemanticsEvent extends SemanticsEvent {
}
/// An event for a semantic announcement of a tooltip.
///
///
/// This is only used by Android to announce tooltip values.
class
TooltipSemanticsEvent
extends
SemanticsEvent
{
...
...
@@ -107,29 +107,3 @@ class TooltipSemanticsEvent extends SemanticsEvent {
};
}
}
/// An event which triggers long press semantic feedback.
///
/// Currently only honored on Android. Triggers a long-press specific sound
/// when TalkBack is enabled.
class
LongPressSemanticsEvent
extends
SemanticsEvent
{
/// Constructs an event that triggers a long-press semantic feedback by the platform.
const
LongPressSemanticsEvent
()
:
super
(
'longPress'
);
@override
Map
<
String
,
dynamic
>
getDataMap
()
=>
const
<
String
,
dynamic
>{};
}
/// An event which triggers tap semantic feedback.
///
/// Currently only honored on Android. Triggers a tap specific sound when
/// TalkBack is enabled.
class
TapSemanticEvent
extends
SemanticsEvent
{
/// Constructs an event that triggers a long-press semantic feedback by the platform.
const
TapSemanticEvent
()
:
super
(
'tap'
);
@override
Map
<
String
,
dynamic
>
getDataMap
()
=>
const
<
String
,
dynamic
>{};
}
packages/flutter/lib/src/semantics/semantics_service.dart
View file @
322eb81a
...
...
@@ -34,8 +34,7 @@ class SemanticsService {
/// Sends a semantic announcement of a tooltip.
///
/// Currently only honored on Android. The contents of [message] will be
/// read by TalkBack.
/// This is only used by Android.
static
Future
<
Null
>
tooltip
(
String
message
)
async
{
final
TooltipSemanticsEvent
event
=
new
TooltipSemanticsEvent
(
message
);
await
SystemChannels
.
accessibility
.
send
(
event
.
toMap
());
...
...
packages/flutter/test/material/checkbox_test.dart
View file @
322eb81a
...
...
@@ -5,7 +5,6 @@
import
'dart:ui'
;
import
'package:flutter/rendering.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter_test/flutter_test.dart'
;
import
'package:flutter/material.dart'
;
...
...
@@ -186,44 +185,4 @@ void main() {
await
tester
.
pumpAndSettle
();
expect
(
checkBoxValue
,
null
);
});
testWidgets
(
'has semantic events'
,
(
WidgetTester
tester
)
async
{
dynamic
semanticEvent
;
bool
checkboxValue
=
false
;
SystemChannels
.
accessibility
.
setMockMessageHandler
((
dynamic
message
)
{
semanticEvent
=
message
;
});
final
SemanticsTester
semanticsTester
=
new
SemanticsTester
(
tester
);
await
tester
.
pumpWidget
(
new
Material
(
child:
new
StatefulBuilder
(
builder:
(
BuildContext
context
,
StateSetter
setState
)
{
return
new
Checkbox
(
value:
checkboxValue
,
onChanged:
(
bool
value
)
{
setState
(()
{
checkboxValue
=
value
;
});
},
);
},
),
),
);
await
tester
.
tap
(
find
.
byType
(
Checkbox
));
final
RenderObject
object
=
tester
.
firstRenderObject
(
find
.
byType
(
Checkbox
));
expect
(
checkboxValue
,
true
);
expect
(
semanticEvent
,
<
String
,
dynamic
>{
'type'
:
'tap'
,
'nodeId'
:
object
.
debugSemantics
.
id
,
'data'
:
<
String
,
dynamic
>{},
});
expect
(
object
.
debugSemantics
.
getSemanticsData
().
hasAction
(
SemanticsAction
.
tap
),
true
);
SystemChannels
.
accessibility
.
setMockMessageHandler
(
null
);
semanticsTester
.
dispose
();
});
}
packages/flutter/test/material/feedback_test.dart
View file @
322eb81a
import
'dart:ui'
;
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import
'package:flutter/material.dart'
;
import
'package:flutter/rendering.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter_test/flutter_test.dart'
;
import
'../widgets/semantics_tester.dart'
;
import
'feedback_tester.dart'
;
void
main
(
)
{
...
...
@@ -26,23 +21,8 @@ void main () {
});
group
(
'Feedback on Android'
,
()
{
List
<
Map
<
String
,
Object
>>
semanticEvents
;
setUp
(()
{
semanticEvents
=
<
Map
<
String
,
Object
>>[];
SystemChannels
.
accessibility
.
setMockMessageHandler
((
dynamic
message
)
{
final
Map
<
dynamic
,
dynamic
>
typedMessage
=
message
;
semanticEvents
.
add
(
typedMessage
.
cast
<
String
,
Object
>());
});
});
tearDown
(()
{
SystemChannels
.
accessibility
.
setMockMessageHandler
(
null
);
});
testWidgets
(
'forTap'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semanticsTester
=
new
SemanticsTester
(
tester
);
await
tester
.
pumpWidget
(
new
TestWidget
(
tapHandler:
(
BuildContext
context
)
{
return
()
=>
Feedback
.
forTap
(
context
);
...
...
@@ -51,27 +31,14 @@ void main () {
await
tester
.
pumpAndSettle
(
kWaitDuration
);
expect
(
feedback
.
hapticCount
,
0
);
expect
(
feedback
.
clickSoundCount
,
0
);
expect
(
semanticEvents
,
isEmpty
);
await
tester
.
tap
(
find
.
text
(
'X'
));
await
tester
.
pumpAndSettle
(
kWaitDuration
);
final
RenderObject
object
=
tester
.
firstRenderObject
(
find
.
byType
(
GestureDetector
));
expect
(
feedback
.
hapticCount
,
0
);
expect
(
feedback
.
clickSoundCount
,
1
);
expect
(
semanticEvents
.
single
,
<
String
,
dynamic
>{
'type'
:
'tap'
,
'nodeId'
:
object
.
debugSemantics
.
id
,
'data'
:
<
String
,
dynamic
>{},
});
expect
(
object
.
debugSemantics
.
getSemanticsData
().
hasAction
(
SemanticsAction
.
tap
),
true
);
semanticsTester
.
dispose
();
});
testWidgets
(
'forTap Wrapper'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semanticsTester
=
new
SemanticsTester
(
tester
);
int
callbackCount
=
0
;
final
VoidCallback
callback
=
()
{
callbackCount
++;
...
...
@@ -82,7 +49,6 @@ void main () {
return
Feedback
.
wrapForTap
(
callback
,
context
);
},
));
await
tester
.
pumpAndSettle
(
kWaitDuration
);
expect
(
feedback
.
hapticCount
,
0
);
expect
(
feedback
.
clickSoundCount
,
0
);
...
...
@@ -90,24 +56,12 @@ void main () {
await
tester
.
tap
(
find
.
text
(
'X'
));
await
tester
.
pumpAndSettle
(
kWaitDuration
);
final
RenderObject
object
=
tester
.
firstRenderObject
(
find
.
byType
(
GestureDetector
));
expect
(
feedback
.
hapticCount
,
0
);
expect
(
feedback
.
clickSoundCount
,
1
);
expect
(
callbackCount
,
1
);
expect
(
semanticEvents
.
single
,
<
String
,
dynamic
>{
'type'
:
'tap'
,
'nodeId'
:
object
.
debugSemantics
.
id
,
'data'
:
<
String
,
dynamic
>{},
});
expect
(
object
.
debugSemantics
.
getSemanticsData
().
hasAction
(
SemanticsAction
.
tap
),
true
);
semanticsTester
.
dispose
();
});
testWidgets
(
'forLongPress'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semanticsTester
=
new
SemanticsTester
(
tester
);
await
tester
.
pumpWidget
(
new
TestWidget
(
longPressHandler:
(
BuildContext
context
)
{
return
()
=>
Feedback
.
forLongPress
(
context
);
...
...
@@ -119,23 +73,11 @@ void main () {
await
tester
.
longPress
(
find
.
text
(
'X'
));
await
tester
.
pumpAndSettle
(
kWaitDuration
);
final
RenderObject
object
=
tester
.
firstRenderObject
(
find
.
byType
(
GestureDetector
));
expect
(
feedback
.
hapticCount
,
1
);
expect
(
feedback
.
clickSoundCount
,
0
);
expect
(
semanticEvents
.
single
,
<
String
,
dynamic
>{
'type'
:
'longPress'
,
'nodeId'
:
object
.
debugSemantics
.
id
,
'data'
:
<
String
,
dynamic
>{},
});
expect
(
object
.
debugSemantics
.
getSemanticsData
().
hasAction
(
SemanticsAction
.
longPress
),
true
);
semanticsTester
.
dispose
();
});
testWidgets
(
'forLongPress Wrapper'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semanticsTester
=
new
SemanticsTester
(
tester
);
int
callbackCount
=
0
;
final
VoidCallback
callback
=
()
{
callbackCount
++;
...
...
@@ -147,26 +89,15 @@ void main () {
},
));
await
tester
.
pumpAndSettle
(
kWaitDuration
);
final
RenderObject
object
=
tester
.
firstRenderObject
(
find
.
byType
(
GestureDetector
));
expect
(
feedback
.
hapticCount
,
0
);
expect
(
feedback
.
clickSoundCount
,
0
);
expect
(
callbackCount
,
0
);
await
tester
.
longPress
(
find
.
text
(
'X'
));
await
tester
.
pumpAndSettle
(
kWaitDuration
);
expect
(
feedback
.
hapticCount
,
1
);
expect
(
feedback
.
clickSoundCount
,
0
);
expect
(
callbackCount
,
1
);
expect
(
semanticEvents
.
single
,
<
String
,
dynamic
>{
'type'
:
'longPress'
,
'nodeId'
:
object
.
debugSemantics
.
id
,
'data'
:
<
String
,
dynamic
>{},
});
expect
(
object
.
debugSemantics
.
getSemanticsData
().
hasAction
(
SemanticsAction
.
longPress
),
true
);
semanticsTester
.
dispose
();
});
});
...
...
packages/flutter/test/material/radio_test.dart
View file @
322eb81a
...
...
@@ -5,7 +5,6 @@
import
'dart:ui'
;
import
'package:flutter/rendering.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter_test/flutter_test.dart'
;
import
'package:flutter/material.dart'
;
...
...
@@ -163,39 +162,4 @@ void main() {
semantics
.
dispose
();
});
testWidgets
(
'has semantic events'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semantics
=
new
SemanticsTester
(
tester
);
final
Key
key
=
new
UniqueKey
();
dynamic
semanticEvent
;
int
radioValue
=
2
;
SystemChannels
.
accessibility
.
setMockMessageHandler
((
dynamic
message
)
{
semanticEvent
=
message
;
});
await
tester
.
pumpWidget
(
new
Material
(
child:
new
Radio
<
int
>(
key:
key
,
value:
1
,
groupValue:
radioValue
,
onChanged:
(
int
i
)
{
radioValue
=
i
;
},
),
));
await
tester
.
tap
(
find
.
byKey
(
key
));
final
RenderObject
object
=
tester
.
firstRenderObject
(
find
.
byKey
(
key
));
expect
(
radioValue
,
1
);
expect
(
semanticEvent
,
<
String
,
dynamic
>{
'type'
:
'tap'
,
'nodeId'
:
object
.
debugSemantics
.
id
,
'data'
:
<
String
,
dynamic
>{},
});
expect
(
object
.
debugSemantics
.
getSemanticsData
().
hasAction
(
SemanticsAction
.
tap
),
true
);
semantics
.
dispose
();
SystemChannels
.
accessibility
.
setMockMessageHandler
(
null
);
});
}
packages/flutter/test/material/switch_test.dart
View file @
322eb81a
...
...
@@ -4,11 +4,9 @@
import
'package:flutter/material.dart'
;
import
'package:flutter/rendering.dart'
;
import
'package:flutter/services.dart'
;
import
'package:flutter_test/flutter_test.dart'
;
import
'../rendering/mock_canvas.dart'
;
import
'../widgets/semantics_tester.dart'
;
void
main
(
)
{
testWidgets
(
'Switch can toggle on tap'
,
(
WidgetTester
tester
)
async
{
...
...
@@ -189,48 +187,4 @@ void main() {
..
circle
(
color:
Colors
.
red
[
500
])
);
});
testWidgets
(
'switch has semantic events'
,
(
WidgetTester
tester
)
async
{
dynamic
semanticEvent
;
bool
value
=
false
;
SystemChannels
.
accessibility
.
setMockMessageHandler
((
dynamic
message
)
{
semanticEvent
=
message
;
});
final
SemanticsTester
semanticsTester
=
new
SemanticsTester
(
tester
);
await
tester
.
pumpWidget
(
new
Directionality
(
textDirection:
TextDirection
.
ltr
,
child:
new
StatefulBuilder
(
builder:
(
BuildContext
context
,
StateSetter
setState
)
{
return
new
Material
(
child:
new
Center
(
child:
new
Switch
(
value:
value
,
onChanged:
(
bool
newValue
)
{
setState
(()
{
value
=
newValue
;
});
},
),
),
);
},
),
),
);
await
tester
.
tap
(
find
.
byType
(
Switch
));
final
RenderObject
object
=
tester
.
firstRenderObject
(
find
.
byType
(
Switch
));
expect
(
value
,
true
);
expect
(
semanticEvent
,
<
String
,
dynamic
>{
'type'
:
'tap'
,
'nodeId'
:
object
.
debugSemantics
.
id
,
'data'
:
<
String
,
dynamic
>{},
});
expect
(
object
.
debugSemantics
.
getSemanticsData
().
hasAction
(
SemanticsAction
.
tap
),
true
);
semanticsTester
.
dispose
();
SystemChannels
.
accessibility
.
setMockMessageHandler
(
null
);
});
}
packages/flutter/test/material/tooltip_test.dart
View file @
322eb81a
import
'dart:ui'
;
import
'package:flutter/services.dart'
;
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
...
...
@@ -606,48 +605,6 @@ void main() {
feedback
.
dispose
();
});
testWidgets
(
'has semantic events'
,
(
WidgetTester
tester
)
async
{
final
List
<
dynamic
>
semanticEvents
=
<
dynamic
>[];
SystemChannels
.
accessibility
.
setMockMessageHandler
((
dynamic
message
)
{
semanticEvents
.
add
(
message
);
});
final
SemanticsTester
semantics
=
new
SemanticsTester
(
tester
);
await
tester
.
pumpWidget
(
new
MaterialApp
(
home:
new
Center
(
child:
new
Tooltip
(
message:
'Foo'
,
child:
new
Container
(
width:
100.0
,
height:
100.0
,
color:
Colors
.
green
[
500
],
),
),
),
),
);
await
tester
.
longPress
(
find
.
byType
(
Tooltip
));
final
RenderObject
object
=
tester
.
firstRenderObject
(
find
.
byType
(
Tooltip
));
expect
(
semanticEvents
,
unorderedEquals
(<
dynamic
>[
<
String
,
dynamic
>{
'type'
:
'longPress'
,
'nodeId'
:
findDebugSemantics
(
object
).
id
,
'data'
:
<
String
,
dynamic
>{},
},
<
String
,
dynamic
>{
'type'
:
'tooltip'
,
'data'
:
<
String
,
dynamic
>{
'message'
:
'Foo'
,
},
},
]));
semantics
.
dispose
();
SystemChannels
.
accessibility
.
setMockMessageHandler
(
null
);
});
testWidgets
(
'Semantics included'
,
(
WidgetTester
tester
)
async
{
final
SemanticsTester
semantics
=
new
SemanticsTester
(
tester
);
...
...
@@ -720,9 +677,3 @@ void main() {
});
}
SemanticsNode
findDebugSemantics
(
RenderObject
object
)
{
if
(
object
.
debugSemantics
!=
null
)
return
object
.
debugSemantics
;
return
findDebugSemantics
(
object
.
parent
);
}
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment