-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
materials_inventory_tab_page.dart
40 lines (38 loc) · 1.76 KB
/
materials_inventory_tab_page.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_staggered_grid_view/flutter_staggered_grid_view.dart';
import 'package:genshindb/application/bloc.dart';
import 'package:genshindb/presentation/materials/widgets/material_card.dart';
import 'package:genshindb/presentation/shared/loading.dart';
import 'package:genshindb/presentation/shared/mixins/app_fab_mixin.dart';
import 'package:genshindb/presentation/shared/utils/grid_utils.dart';
class MaterialsInventoryTabPage extends StatefulWidget {
@override
_MaterialsInventoryTabPageState createState() => _MaterialsInventoryTabPageState();
}
class _MaterialsInventoryTabPageState extends State<MaterialsInventoryTabPage> with SingleTickerProviderStateMixin, AppFabMixin {
@override
Widget build(BuildContext context) {
final isPortrait = MediaQuery.of(context).orientation == Orientation.portrait;
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 5),
child: Scaffold(
floatingActionButton: getAppFab(),
body: BlocBuilder<InventoryBloc, InventoryState>(
builder: (ctx, state) => state.map(
loading: (_) => const Loading(useScaffold: false),
loaded: (state) => StaggeredGridView.countBuilder(
controller: scrollController,
crossAxisCount: GridUtils.getCrossAxisCountForGrids(context, forPortrait: 3),
itemBuilder: (ctx, index) => MaterialCard.quantity(item: state.materials[index]),
itemCount: state.materials.length,
crossAxisSpacing: isPortrait ? 10 : 5,
mainAxisSpacing: 5,
staggeredTileBuilder: (int index) => const StaggeredTile.fit(1),
),
),
),
),
);
}
}