Files
GitJournal/lib/folder_views/card_view.dart
Vishesh Handa fac2826800 Implement the scaffolding for search highlighting
Still need to implement the actual highlighting part
2020-09-05 16:14:16 +02:00

76 lines
2.0 KiB
Dart

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:gitjournal/core/note.dart';
import 'package:gitjournal/core/notes_folder.dart';
import 'package:gitjournal/folder_views/note_tile.dart';
class CardView extends StatelessWidget {
final NoteSelectedFunction noteTapped;
final NoteSelectedFunction noteLongPressed;
final NoteBoolPropertyFunction isNoteSelected;
final NotesFolder folder;
final String emptyText;
final bool fixedHeight;
final String searchTerm;
CardView({
@required this.folder,
@required this.noteTapped,
@required this.noteLongPressed,
@required this.isNoteSelected,
@required this.emptyText,
@required this.searchTerm,
this.fixedHeight = false,
});
@override
Widget build(BuildContext context) {
if (folder.isEmpty) {
return Center(
child: Text(
emptyText,
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 28.0,
fontWeight: FontWeight.w300,
color: Colors.grey[350],
),
),
);
}
StaggeredTile stagTile;
if (fixedHeight) {
stagTile = const StaggeredTile.extent(1, 200.0);
} else {
stagTile = const StaggeredTile.fit(1);
}
var gridView = StaggeredGridView.extentBuilder(
itemCount: folder.notes.length,
itemBuilder: (BuildContext context, int index) {
var note = folder.notes[index];
return NoteTile(
note: note,
noteTapped: noteTapped,
noteLongPressed: noteLongPressed,
selected: isNoteSelected(note),
searchTerm: searchTerm,
);
},
maxCrossAxisExtent: 200.0,
staggeredTileBuilder: (int i) => stagTile,
mainAxisSpacing: 8.0,
crossAxisSpacing: 8.0,
padding: const EdgeInsets.fromLTRB(8.0, 16.0, 8.0, 16.0),
);
return gridView;
}
}