mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
93 lines
2.5 KiB
Dart
93 lines
2.5 KiB
Dart
// Copyright 2014 The Flutter 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';
|
|
|
|
/// Flutter code sample for [RawAutocomplete].
|
|
|
|
void main() => runApp(const AutocompleteExampleApp());
|
|
|
|
class AutocompleteExampleApp extends StatelessWidget {
|
|
const AutocompleteExampleApp({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return MaterialApp(
|
|
home: Scaffold(
|
|
appBar: AppBar(
|
|
title: const Text('RawAutocomplete Basic'),
|
|
),
|
|
body: const Center(
|
|
child: AutocompleteBasicExample(),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
}
|
|
|
|
class AutocompleteBasicExample extends StatelessWidget {
|
|
const AutocompleteBasicExample({super.key});
|
|
|
|
static const List<String> _options = <String>[
|
|
'aardvark',
|
|
'bobcat',
|
|
'chameleon',
|
|
];
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return RawAutocomplete<String>(
|
|
optionsBuilder: (TextEditingValue textEditingValue) {
|
|
return _options.where((String option) {
|
|
return option.contains(textEditingValue.text.toLowerCase());
|
|
});
|
|
},
|
|
fieldViewBuilder: (
|
|
BuildContext context,
|
|
TextEditingController textEditingController,
|
|
FocusNode focusNode,
|
|
VoidCallback onFieldSubmitted,
|
|
) {
|
|
return TextFormField(
|
|
controller: textEditingController,
|
|
focusNode: focusNode,
|
|
onFieldSubmitted: (String value) {
|
|
onFieldSubmitted();
|
|
},
|
|
);
|
|
},
|
|
optionsViewBuilder: (
|
|
BuildContext context,
|
|
AutocompleteOnSelected<String> onSelected,
|
|
Iterable<String> options,
|
|
) {
|
|
return Align(
|
|
alignment: Alignment.topLeft,
|
|
child: Material(
|
|
elevation: 4.0,
|
|
child: SizedBox(
|
|
height: 200.0,
|
|
child: ListView.builder(
|
|
padding: const EdgeInsets.all(8.0),
|
|
itemCount: options.length,
|
|
itemBuilder: (BuildContext context, int index) {
|
|
final String option = options.elementAt(index);
|
|
return GestureDetector(
|
|
onTap: () {
|
|
onSelected(option);
|
|
},
|
|
child: ListTile(
|
|
title: Text(option),
|
|
),
|
|
);
|
|
},
|
|
),
|
|
),
|
|
),
|
|
);
|
|
},
|
|
);
|
|
}
|
|
}
|