Skip to content

Commit

Permalink
[Presentation] Show all the materials in the today_materials_page
Browse files Browse the repository at this point in the history
  • Loading branch information
Wolfteam committed Jul 18, 2021
1 parent 4afe843 commit 229deff
Show file tree
Hide file tree
Showing 4 changed files with 113 additions and 42 deletions.
3 changes: 2 additions & 1 deletion lib/presentation/tierlist/widgets/tierlist_row.dart
Expand Up @@ -3,6 +3,7 @@ import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:genshindb/application/bloc.dart';
import 'package:genshindb/generated/l10n.dart';
import 'package:genshindb/presentation/shared/circle_character.dart';
import 'package:genshindb/presentation/shared/utils/size_utils.dart';

import 'rename_tierlist_dialog.dart';
import 'tierlist_row_color_picker.dart';
Expand Down Expand Up @@ -74,7 +75,7 @@ class TierListRow extends StatelessWidget {
children: images
.map((e) => CircleCharacter(
image: e,
radius: 30,
radius: SizeUtils.getSizeForCircleImages(context),
onTap: (img) => context.read<TierListBloc>().add(TierListEvent.deleteCharacterFromRow(index: index, charImg: e)),
))
.toList(),
Expand Down
4 changes: 2 additions & 2 deletions lib/presentation/today_materials/today_materials_page.dart
Expand Up @@ -30,7 +30,7 @@ class TodayMaterialsPage extends StatelessWidget {
),
),
),
SliverCharacterAscensionMaterials(charAscMaterials: charsMaterials),
SliverCharacterAscensionMaterials(charAscMaterials: charsMaterials, useListView: false),
SliverPadding(
padding: const EdgeInsets.only(left: 10, top: 10),
sliver: SliverToBoxAdapter(
Expand All @@ -40,7 +40,7 @@ class TodayMaterialsPage extends StatelessWidget {
),
),
),
SliverWeaponAscensionMaterials(weaponAscMaterials: weaponMaterials),
SliverWeaponAscensionMaterials(weaponAscMaterials: weaponMaterials, useListView: false),
],
),
),
Expand Down
Expand Up @@ -2,41 +2,72 @@ import 'package:flutter/material.dart';
import 'package:genshindb/domain/models/models.dart';
import 'package:genshindb/presentation/home/widgets/char_card_ascension_material.dart';
import 'package:genshindb/presentation/shared/styles.dart';
import 'package:responsive_builder/responsive_builder.dart';
import 'package:responsive_grid/responsive_grid.dart';

class SliverCharacterAscensionMaterials extends StatelessWidget {
final List<TodayCharAscensionMaterialsModel> charAscMaterials;
final bool useListView;

const SliverCharacterAscensionMaterials({
Key? key,
required this.charAscMaterials,
this.useListView = true,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return SliverToBoxAdapter(
child: SizedBox(
height: Styles.materialCardHeight,
child: ListView.builder(
itemCount: charAscMaterials.length,
physics: const BouncingScrollPhysics(),
scrollDirection: Axis.horizontal,
itemBuilder: (ctx, index) {
final e = charAscMaterials[index];
return e.isFromBoss
? CharCardAscensionMaterial.fromBoss(
name: e.name,
image: e.image,
bossName: e.bossName,
charImgs: e.characters,
)
: CharCardAscensionMaterial.fromDays(
name: e.name,
image: e.image,
days: e.days,
charImgs: e.characters,
);
},
if (useListView) {
return SliverToBoxAdapter(
child: SizedBox(
height: Styles.materialCardHeight,
child: ListView.builder(
itemCount: charAscMaterials.length,
physics: const BouncingScrollPhysics(),
scrollDirection: Axis.horizontal,
itemBuilder: (ctx, index) {
final e = charAscMaterials[index];
return e.isFromBoss
? CharCardAscensionMaterial.fromBoss(name: e.name, image: e.image, bossName: e.bossName, charImgs: e.characters)
: CharCardAscensionMaterial.fromDays(name: e.name, image: e.image, days: e.days, charImgs: e.characters);
},
),
),
);
}

final mediaQuery = MediaQuery.of(context);
final deviceType = getDeviceType(mediaQuery.size);
final isPortrait = mediaQuery.orientation == Orientation.portrait;
return SliverToBoxAdapter(
child: ResponsiveGridRow(
children: charAscMaterials.map((e) {
final child = e.isFromBoss
? CharCardAscensionMaterial.fromBoss(name: e.name, image: e.image, bossName: e.bossName, charImgs: e.characters)
: CharCardAscensionMaterial.fromDays(name: e.name, image: e.image, days: e.days, charImgs: e.characters);

switch (deviceType) {
case DeviceScreenType.mobile:
return ResponsiveGridCol(
sm: isPortrait ? 12 : 6,
md: isPortrait ? 6 : 4,
xs: isPortrait ? 6 : 3,
xl: isPortrait ? 3 : 2,
child: child,
);
case DeviceScreenType.desktop:
case DeviceScreenType.tablet:
return ResponsiveGridCol(
sm: isPortrait ? 3 : 4,
md: isPortrait ? 4 : 3,
xs: 3,
xl: 3,
child: child,
);
default:
return ResponsiveGridCol(sm: 4, md: 3, xs: 4, xl: 3, child: child);
}
}).toList(),
),
);
}
Expand Down
Expand Up @@ -2,34 +2,73 @@ import 'package:flutter/material.dart';
import 'package:genshindb/domain/models/models.dart';
import 'package:genshindb/presentation/home/widgets/weapon_card_ascension_material.dart';
import 'package:genshindb/presentation/shared/styles.dart';
import 'package:responsive_builder/responsive_builder.dart';
import 'package:responsive_grid/responsive_grid.dart';

class SliverWeaponAscensionMaterials extends StatelessWidget {
final List<TodayWeaponAscensionMaterialModel> weaponAscMaterials;
final bool useListView;

const SliverWeaponAscensionMaterials({
Key? key,
required this.weaponAscMaterials,
this.useListView = true,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return SliverToBoxAdapter(
child: SizedBox(
height: Styles.materialCardHeight,
child: ListView.builder(
itemCount: weaponAscMaterials.length,
physics: const BouncingScrollPhysics(),
scrollDirection: Axis.horizontal,
itemBuilder: (ctx, index) {
final item = weaponAscMaterials[index];
return WeaponCardAscensionMaterial(
name: item.name,
image: item.image,
days: item.days,
weapons: item.weapons,
);
},
if (useListView) {
return SliverToBoxAdapter(
child: SizedBox(
height: Styles.materialCardHeight,
child: ListView.builder(
itemCount: weaponAscMaterials.length,
physics: const BouncingScrollPhysics(),
scrollDirection: Axis.horizontal,
itemBuilder: (ctx, index) {
final item = weaponAscMaterials[index];
return WeaponCardAscensionMaterial(
name: item.name,
image: item.image,
days: item.days,
weapons: item.weapons,
);
},
),
),
);
}

final mediaQuery = MediaQuery.of(context);
final deviceType = getDeviceType(mediaQuery.size);
final isPortrait = mediaQuery.orientation == Orientation.portrait;
return SliverToBoxAdapter(
child: ResponsiveGridRow(
children: weaponAscMaterials.map((e) {
final child = WeaponCardAscensionMaterial(name: e.name, image: e.image, days: e.days, weapons: e.weapons);

switch (deviceType) {
case DeviceScreenType.mobile:
return ResponsiveGridCol(
sm: isPortrait ? 12 : 6,
md: isPortrait ? 6 : 4,
xs: isPortrait ? 6 : 3,
xl: isPortrait ? 3 : 2,
child: child,
);
case DeviceScreenType.desktop:
case DeviceScreenType.tablet:
return ResponsiveGridCol(
sm: isPortrait ? 3 : 4,
md: isPortrait ? 4 : 3,
xs: 3,
xl: 3,
child: child,
);
default:
return ResponsiveGridCol(sm: 4, md: 3, xs: 4, xl: 3, child: child);
}
}).toList(),
),
);
}
Expand Down

0 comments on commit 229deff

Please sign in to comment.