-
Notifications
You must be signed in to change notification settings - Fork 29.7k
Closed
Labels
cp: approvedApproved cherry-pick requestApproved cherry-pick requestcp: merge-to-stableCherry-picks that should be merged to stableCherry-picks that should be merged to stablecp: mergedCherry-pick has been merged to the release branch.Cherry-pick has been merged to the release branch.cp: reviewCherry-picks in the review queueCherry-picks in the review queue
Description
issue_link
Commit Hash
Target
stable
pr_link
Impacted Users
Flutter users
Impact Description
Fixes the position of SearchAnchor when used with nested navigator
Workaround
no workaround
Risk
low
Test Coverage
yes
Validation Steps
Run this test case:
Test case
void main() => runApp(const NestedSearchBarApp());
class NestedSearchBarApp extends StatefulWidget {
const NestedSearchBarApp({super.key});
@override
State<NestedSearchBarApp> createState() => _NestedSearchBarAppState();
}
class _NestedSearchBarAppState extends State<NestedSearchBarApp> {
final SearchController controller = SearchController();
@override
Widget build(BuildContext context) {
final ThemeData themeData = ThemeData(useMaterial3: true);
return MaterialApp(
theme: themeData,
builder: (BuildContext context, Widget? child) {
return Scaffold(
body: Row(
children: <Widget>[
NavigationRail(
selectedIndex: 1,
destinations: const <NavigationRailDestination>[
NavigationRailDestination(
icon: Icon(Icons.favorite_border),
selectedIcon: Icon(Icons.favorite),
label: Text('First'),
),
NavigationRailDestination(
icon: Icon(Icons.bookmark_border),
selectedIcon: Icon(Icons.book),
label: Text('Second'),
),
],
),
const VerticalDivider(thickness: 1, width: 1),
Expanded(child: child!)
],
),
);
},
home: Scaffold(
appBar: AppBar(title: const Text('Search Anchor Sample')),
body: Column(
children: <Widget>[
SearchAnchor(
searchController: controller,
builder: (BuildContext context, SearchController controller) {
return IconButton(
icon: const Icon(Icons.search),
onPressed: () {
controller.openView();
},
);
},
suggestionsBuilder:
(BuildContext context, SearchController controller) {
return List<ListTile>.generate(5, (int index) {
final String item = 'item $index';
return ListTile(
title: Text(item),
onTap: () {
setState(() {
controller.closeView(item);
});
},
);
});
}),
Center(
child: controller.text.isEmpty
? const Text('No item selected')
: Text('Selected item: ${controller.value.text}'),
),
],
),
),
);
}
}andrelmlins and bodjayandrelmlins and bodjay
Metadata
Metadata
Assignees
Labels
cp: approvedApproved cherry-pick requestApproved cherry-pick requestcp: merge-to-stableCherry-picks that should be merged to stableCherry-picks that should be merged to stablecp: mergedCherry-pick has been merged to the release branch.Cherry-pick has been merged to the release branch.cp: reviewCherry-picks in the review queueCherry-picks in the review queue