@@ -132,7 +132,8 @@ class _NewDmPickerState extends State<NewDmPicker> with PerAccountStoreAwareStat
132132 _NewDmHeader (selectedUserIds: selectedUserIds),
133133 _NewDmSearchBar (
134134 controller: searchController,
135- selectedUserIds: selectedUserIds),
135+ selectedUserIds: selectedUserIds,
136+ unselectUser: _unselectUser),
136137 Expanded (
137138 child: _NewDmUserList (
138139 filteredUsers: filteredUsers,
@@ -214,10 +215,12 @@ class _NewDmSearchBar extends StatelessWidget {
214215 const _NewDmSearchBar ({
215216 required this .controller,
216217 required this .selectedUserIds,
218+ required this .unselectUser,
217219 });
218220
219221 final TextEditingController controller;
220222 final Set <int > selectedUserIds;
223+ final void Function (int ) unselectUser;
221224
222225 // void _removeUser
223226
@@ -265,7 +268,7 @@ class _NewDmSearchBar extends StatelessWidget {
265268 crossAxisAlignment: WrapCrossAlignment .center,
266269 children: [
267270 for (final userId in selectedUserIds)
268- _SelectedUserChip (userId: userId),
271+ _SelectedUserChip (userId: userId, unselectUser : unselectUser ),
269272 // The IntrinsicWidth lets the text field participate in the Wrap
270273 // when its content fits on the same line with a user chip,
271274 // by preventing it from expanding to fill the available width. See:
@@ -276,9 +279,13 @@ class _NewDmSearchBar extends StatelessWidget {
276279}
277280
278281class _SelectedUserChip extends StatelessWidget {
279- const _SelectedUserChip ({required this .userId});
282+ const _SelectedUserChip ({
283+ required this .userId,
284+ required this .unselectUser,
285+ });
280286
281287 final int userId;
288+ final void Function (int ) unselectUser;
282289
283290 @override
284291 Widget build (BuildContext context) {
@@ -287,24 +294,26 @@ class _SelectedUserChip extends StatelessWidget {
287294 final clampedTextScaler = MediaQuery .textScalerOf (context)
288295 .clamp (maxScaleFactor: 1.5 );
289296
290- return DecoratedBox (
291- decoration: BoxDecoration (
292- color: designVariables.bgMenuButtonSelected,
293- borderRadius: BorderRadius .circular (3 )),
294- child: Row (mainAxisSize: MainAxisSize .min, children: [
295- Avatar (userId: userId, size: clampedTextScaler.scale (22 ), borderRadius: 3 ),
296- Flexible (
297- child: Padding (
298- padding: const EdgeInsetsDirectional .fromSTEB (5 , 3 , 4 , 3 ),
299- child: Text (store.userDisplayName (userId),
300- textScaler: clampedTextScaler,
301- maxLines: 1 ,
302- overflow: TextOverflow .ellipsis,
303- style: TextStyle (
304- fontSize: 16 ,
305- height: 16 / 16 ,
306- color: designVariables.labelMenuButton)))),
307- ]));
297+ return GestureDetector (
298+ onTap: () => unselectUser (userId),
299+ child: DecoratedBox (
300+ decoration: BoxDecoration (
301+ color: designVariables.bgMenuButtonSelected,
302+ borderRadius: BorderRadius .circular (3 )),
303+ child: Row (mainAxisSize: MainAxisSize .min, children: [
304+ Avatar (userId: userId, size: clampedTextScaler.scale (22 ), borderRadius: 3 ),
305+ Flexible (
306+ child: Padding (
307+ padding: const EdgeInsetsDirectional .fromSTEB (5 , 3 , 4 , 3 ),
308+ child: Text (store.userDisplayName (userId),
309+ textScaler: clampedTextScaler,
310+ maxLines: 1 ,
311+ overflow: TextOverflow .ellipsis,
312+ style: TextStyle (
313+ fontSize: 16 ,
314+ height: 16 / 16 ,
315+ color: designVariables.labelMenuButton)))),
316+ ])));
308317 }
309318}
310319
0 commit comments