import 'package:flutter/material.dart'; import 'package:flutter_typeahead/flutter_typeahead.dart'; import 'package:provider/provider.dart'; import 'package:test_sa/controllers/providers/api/devices_provider.dart'; import 'package:test_sa/controllers/providers/api/user_provider.dart'; import 'package:test_sa/controllers/providers/settings/setting_provider.dart'; import 'package:test_sa/models/lookup.dart'; import 'package:test_sa/views/app_style/colors.dart'; import 'package:test_sa/views/app_style/sizing.dart'; class AutoCompleteModelField extends StatefulWidget { final Lookup initialValue; final Function(Lookup) onPick; const AutoCompleteModelField({ Key key, this.initialValue, this.onPick, }) : super(key: key); @override _AutoCompleteModelFieldState createState() => _AutoCompleteModelFieldState(); } class _AutoCompleteModelFieldState extends State { SettingProvider _settingProvider; DevicesProvider _devicesProvider; UserProvider _userProvider; TextEditingController _controller; @override void initState() { _controller = TextEditingController(text: widget.initialValue?.name); super.initState(); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { _settingProvider = Provider.of(context); _userProvider = Provider.of(context); _devicesProvider = Provider.of(context); // return Container( padding: const EdgeInsets.symmetric(horizontal: 16), decoration: BoxDecoration( color: Colors.white, border: Border.all(color: AColors.black), borderRadius: BorderRadius.circular(AppStyle.borderRadius * AppStyle.getScaleFactor(context)), boxShadow: [AppStyle.boxShadow]), child: TypeAheadField( textFieldConfiguration: TextFieldConfiguration( style: Theme.of(context).textTheme.headline6, controller: _controller, textAlign: TextAlign.center, decoration: const InputDecoration( hintText: "Model", border: InputBorder.none, disabledBorder: InputBorder.none, focusedBorder: InputBorder.none, enabledBorder: InputBorder.none, ), textInputAction: TextInputAction.search, ), suggestionsCallback: (value) async { return await _devicesProvider.getModels( code: value, ); }, itemBuilder: (context, lookup) { return ListTile( title: Text(lookup.name), ); }, onSuggestionSelected: (lookup) { _controller.text = lookup.name; widget.onPick(lookup); }, ), ); } }