diff --git a/lib/src/pages/version_selection.dart b/lib/src/pages/version_selection.dart index cba1b8b..b6b1818 100644 --- a/lib/src/pages/version_selection.dart +++ b/lib/src/pages/version_selection.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:tuple/tuple.dart'; import 'package:gettext_i18n/gettext_i18n.dart'; +import 'package:tuple/tuple.dart'; import '../model/operating_system.dart'; import '../model/option.dart'; @@ -18,12 +18,61 @@ class VersionSelection extends StatefulWidget { } class _VersionSelectionState extends State { + var term = ""; + final focusNode = FocusNode(); + + @override + void initState() { + focusNode.requestFocus(); + super.initState(); + } + @override Widget build(BuildContext context) { + var list = widget.operatingSystem.versions + .where((version) => + version.version.toLowerCase().contains(term.toLowerCase())) + .toList(); + return Scaffold( appBar: AppBar( title: Text(context .t('Select version for {0}', args: [widget.operatingSystem.name])), + bottom: PreferredSize( + preferredSize: const Size.fromHeight(kToolbarHeight), + child: Padding( + padding: const EdgeInsets.all(8.0), + child: Container( + decoration: BoxDecoration( + color: Theme.of(context).canvasColor, + ), + child: Padding( + padding: const EdgeInsets.all(8), + child: Material( + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + const Icon(Icons.search), + Expanded( + child: TextField( + focusNode: focusNode, + decoration: InputDecoration.collapsed( + hintText: context.t('Search version'), + ), + onChanged: (value) { + setState(() { + term = value; + }); + }, + ), + ), + ], + ), + ), + ), + ), + ), + ), ), body: SingleChildScrollView( child: Column( @@ -31,21 +80,19 @@ class _VersionSelectionState extends State { ListView.builder( padding: const EdgeInsets.only(top: 4), shrinkWrap: true, - itemCount: widget.operatingSystem.versions.length, + itemCount: list.length, itemBuilder: (context, index) { - var item = widget.operatingSystem.versions[index]; + var item = list[index]; return Card( child: ListTile( title: Text(item.version), onTap: () { - if (widget - .operatingSystem.versions[index].options.length > - 1) { + if (item.options.length > 1) { Navigator.of(context) .push