fix, autocomplete, fill id field

Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
fufesou 2023-10-27 17:00:13 +08:00
parent 8cc9e30f86
commit e32748daf2
3 changed files with 17 additions and 10 deletions

View File

@ -55,12 +55,12 @@ import 'package:flutter_hbb/common/widgets/peer_card.dart';
}
class AutocompletePeerTile extends StatefulWidget {
final IDTextEditingController idController;
final VoidCallback onSelect;
final Peer peer;
const AutocompletePeerTile({
Key? key,
required this.idController,
required this.onSelect,
required this.peer,
}) : super(key: key);
@ -85,12 +85,7 @@ class _AutocompletePeerTileState extends State<AutocompletePeerTile>{
fontSize: 11,
color: Theme.of(context).textTheme.titleLarge?.color?.withOpacity(0.6));
final child = GestureDetector(
onTap: () {
setState(() {
widget.idController.id = widget.peer.id;
FocusScope.of(context).unfocus();
});
},
onTap: () => widget.onSelect(),
child:
Container(
height: 42,

View File

@ -277,6 +277,12 @@ class _ConnectionPageState extends State<ConnectionPage>
},
));
},
onSelected: (option) {
setState(() {
_idController.id = option.id;
FocusScope.of(context).unfocus();
});
},
optionsViewBuilder: (BuildContext context, AutocompleteOnSelected<Peer> onSelected, Iterable<Peer> options) {
double maxHeight = options.length * 50;
maxHeight = maxHeight > 200 ? 200 : maxHeight;
@ -304,7 +310,7 @@ class _ConnectionPageState extends State<ConnectionPage>
: Padding(
padding: const EdgeInsets.only(top: 5),
child: ListView(
children: options.map((peer) => AutocompletePeerTile(idController: _idController, peer: peer)).toList(),
children: options.map((peer) => AutocompletePeerTile(onSelect: () => onSelected(peer), peer: peer)).toList(),
),
),
),

View File

@ -245,6 +245,12 @@ class _ConnectionPageState extends State<ConnectionPage> {
inputFormatters: [IDTextInputFormatter()],
);
},
onSelected: (option) {
setState(() {
_idController.id = option.id;
FocusScope.of(context).unfocus();
});
},
optionsViewBuilder: (BuildContext context, AutocompleteOnSelected<Peer> onSelected, Iterable<Peer> options) {
double maxHeight = options.length * 50;
maxHeight = maxHeight > 200 ? 200 : maxHeight;
@ -268,7 +274,7 @@ class _ConnectionPageState extends State<ConnectionPage> {
)))
: ListView(
padding: EdgeInsets.only(top: 5),
children: options.map((peer) => AutocompletePeerTile(idController: _idController, peer: peer)).toList(),
children: options.map((peer) => AutocompletePeerTile(onSelect: () => onSelected(peer), peer: peer)).toList(),
))))
);
},