@@ -102,7 +102,6 @@ class _TemplateDialogState extends State<TemplateDialog> {
102102 Widget build (BuildContext context) {
103103 final width = MediaQuery .widthOf (context);
104104 final isMobile = width < LeapBreakpoints .medium;
105- final detailsTemplate = _clickedTemplate;
106105 final bloc = widget.bloc;
107106 return ResponsiveAlertDialog (
108107 constraints: const BoxConstraints (
@@ -155,62 +154,81 @@ class _TemplateDialogState extends State<TemplateDialog> {
155154 tooltip: LeapLocalizations .of (context).create,
156155 ),
157156 ],
158- content: Row (
159- children: [
160- Expanded (
161- flex: 2 ,
162- child: FutureBuilder <List <dynamic >>(
163- future: _combinedFuture,
164- builder: (context, snapshot) {
165- if (snapshot.hasError) {
166- return Text (snapshot.error.toString ());
167- }
168- if (! snapshot.hasData) {
169- return const Center (child: CircularProgressIndicator ());
170- }
171- final userTemplates =
172- snapshot.data! [0 ] as List <FileSystemFile <NoteData >>;
173- final coreTemplates = snapshot.data! [1 ] as List <NoteData >;
174- return BlocBuilder <SettingsCubit , ButterflySettings >(
157+ content: FutureBuilder <List <dynamic >>(
158+ future: _combinedFuture,
159+ builder: (context, snapshot) {
160+ if (snapshot.hasError) {
161+ return Text (snapshot.error.toString ());
162+ }
163+ if (! snapshot.hasData) {
164+ return const Center (child: CircularProgressIndicator ());
165+ }
166+ final userTemplates =
167+ snapshot.data! [0 ] as List <FileSystemFile <NoteData >>;
168+ final coreTemplates = snapshot.data! [1 ] as List <NoteData >;
169+ final search = _searchController.text.toLowerCase ();
170+ final filteredUserTemplates = userTemplates
171+ .where (
172+ (element) =>
173+ element.data! .name? .toLowerCase ().contains (search) ?? true ,
174+ )
175+ .toList ();
176+ final filteredCoreTemplates = coreTemplates
177+ .where (
178+ (element) =>
179+ element.name? .toLowerCase ().contains (search) ?? true ,
180+ )
181+ .toList ();
182+ final detailsTemplate = isMobile
183+ ? _clickedTemplate
184+ : _clickedTemplate ??
185+ filteredUserTemplates.firstOrNull? .data ??
186+ filteredCoreTemplates.firstOrNull;
187+ return Row (
188+ children: [
189+ Expanded (
190+ flex: 2 ,
191+ child: BlocBuilder <SettingsCubit , ButterflySettings >(
175192 buildWhen: (previous, current) =>
176193 previous.favoriteTemplates != current.favoriteTemplates,
177194 builder: (context, state) {
178195 return _buildBody (
179196 context,
180- userTemplates ,
181- coreTemplates ,
197+ filteredUserTemplates ,
198+ filteredCoreTemplates ,
182199 isMobile,
183200 state.favoriteTemplates,
201+ detailsTemplate,
184202 );
185203 },
186- );
187- },
188- ),
189- ),
190- if (! isMobile)
191- Expanded (
192- child: detailsTemplate == null
193- ? Card (
194- child: Center (
195- child: Text (
196- AppLocalizations .of (context).noItemSelected,
204+ ),
205+ ),
206+ if (! isMobile)
207+ Expanded (
208+ child: detailsTemplate == null
209+ ? Card (
210+ child: Center (
211+ child: Text (
212+ AppLocalizations .of (context).noItemSelected,
213+ ),
214+ ),
215+ )
216+ : _TemplateDetailsView (
217+ template: detailsTemplate,
218+ onOpen: (area) {
219+ openNewDocument (
220+ context,
221+ widget.bloc != null ,
222+ detailsTemplate,
223+ _templateSystem.storage? .identifier,
224+ area,
225+ );
226+ },
197227 ),
198- ),
199- )
200- : _TemplateDetailsView (
201- template: detailsTemplate,
202- onOpen: (area) {
203- openNewDocument (
204- context,
205- widget.bloc != null ,
206- detailsTemplate,
207- _templateSystem.storage? .identifier,
208- area,
209- );
210- },
211- ),
212- ),
213- ],
228+ ),
229+ ],
230+ );
231+ },
214232 ),
215233 );
216234 }
@@ -221,6 +239,7 @@ class _TemplateDialogState extends State<TemplateDialog> {
221239 int index,
222240 bool isMobile,
223241 List <FavoriteLocation > favoriteTemplates,
242+ NoteData ? activeTemplate,
224243 ) {
225244 final template = entry.value[index];
226245 final isCore = entry.key == null ;
@@ -314,7 +333,7 @@ class _TemplateDialogState extends State<TemplateDialog> {
314333 key: ValueKey (template.path),
315334 selectionMode: _selectedTemplates.isNotEmpty,
316335 selected: _selectedTemplates.contains (template.path),
317- isActive: _clickedTemplate == template.data,
336+ isActive: activeTemplate == template.data,
318337 isCore: isCore,
319338 starred: starred,
320339 location: location,
@@ -342,29 +361,12 @@ class _TemplateDialogState extends State<TemplateDialog> {
342361
343362 Widget _buildBody (
344363 BuildContext context,
345- List <FileSystemFile <NoteData >> userTemplates ,
346- List <NoteData > coreTemplates ,
364+ List <FileSystemFile <NoteData >> filteredUserTemplates ,
365+ List <NoteData > filteredCoreTemplates ,
347366 bool isMobile,
348367 List <FavoriteLocation > favoriteTemplates,
368+ NoteData ? activeTemplate,
349369 ) {
350- final filteredUserTemplates = userTemplates
351- .where (
352- (element) =>
353- element.data! .name? .toLowerCase ().contains (
354- _searchController.text.toLowerCase (),
355- ) ??
356- true ,
357- )
358- .toList ();
359- final filteredCoreTemplates = coreTemplates
360- .where (
361- (element) =>
362- element.name? .toLowerCase ().contains (
363- _searchController.text.toLowerCase (),
364- ) ??
365- true ,
366- )
367- .toList ();
368370 final everythingSelected =
369371 _selectedTemplates.length == filteredUserTemplates.length;
370372 final groupedTemplates = filteredUserTemplates
@@ -416,6 +418,7 @@ class _TemplateDialogState extends State<TemplateDialog> {
416418 index,
417419 isMobile,
418420 favoriteTemplates,
421+ activeTemplate,
419422 ),
420423 itemCount: entry.value.length,
421424 )
@@ -435,6 +438,7 @@ class _TemplateDialogState extends State<TemplateDialog> {
435438 index,
436439 isMobile,
437440 favoriteTemplates,
441+ activeTemplate,
438442 ),
439443 itemCount: entry.value.length,
440444 ),
0 commit comments