Skip to content

Commit

Permalink
fix: made it easier for users on smaller screens to see baro's inventory
Browse files Browse the repository at this point in the history
  • Loading branch information
SlayerOrnstein committed Dec 16, 2023
1 parent 4d90141 commit e6dbe4d
Show file tree
Hide file tree
Showing 2 changed files with 100 additions and 22 deletions.
94 changes: 94 additions & 0 deletions lib/worldstate/widgets/trader_inventory/inventory.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
import 'package:black_hole_flutter/black_hole_flutter.dart';
import 'package:flutter/material.dart';
import 'package:intl/intl.dart';
import 'package:navis_ui/navis_ui.dart';
import 'package:warframestat_client/warframestat_client.dart';

class TraderItemView extends StatelessWidget {
const TraderItemView({super.key, required this.traderItem});

final TraderItem traderItem;

@override
Widget build(BuildContext context) {
return Card(
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
traderItem.item,
style: context.theme.textTheme.titleMedium,
),
Padding(
padding: const EdgeInsets.only(top: 8, right: 16),
child: _TraderItemTrailing(
credits: traderItem.credits ?? 0,
ducats: traderItem.ducats ?? 0,
),
),
],
),
),
);
}
}

class _TraderItemTrailing extends StatelessWidget {
const _TraderItemTrailing({
required this.credits,
required this.ducats,
});

final int credits;
final int ducats;

@override
Widget build(BuildContext context) {
return SizedBox(
height: 65,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
_TrailingColumn(
header: 'Credits',
value: credits,
),
const SizedBox(width: 25),
_TrailingColumn(
header: 'Ducats',
value: ducats,
),
],
),
);
}
}

class _TrailingColumn extends StatelessWidget {
const _TrailingColumn({required this.header, required this.value});

final String header;
final int value;

@override
Widget build(BuildContext context) {
final format = NumberFormat();
final textTheme = context.textTheme;
final headerStyle =
textTheme.bodyMedium?.copyWith(fontWeight: FontWeight.w500);
final valueStyle =
textTheme.headlineSmall?.copyWith(fontWeight: FontWeight.w800);

return Column(
mainAxisAlignment: MainAxisAlignment.center,
mainAxisSize: MainAxisSize.min,
children: [
Text(header, style: headerStyle),
SizedBoxSpacer.spacerHeight6,
Text(format.format(value), style: valueStyle),
],
);
}
}
28 changes: 6 additions & 22 deletions lib/worldstate/widgets/trader_inventory/inventory_tables.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:navis/worldstate/widgets/trader_inventory/inventory.dart';
import 'package:navis/worldstate/worldstate.dart';
import 'package:responsive_builder/responsive_builder.dart';
import 'package:warframestat_client/warframestat_client.dart';
Expand Down Expand Up @@ -49,28 +50,11 @@ class _MobileInventoryDataTable extends StatelessWidget {

@override
Widget build(BuildContext context) {
return SingleChildScrollView(
child: DataTable(
columns: _buildDataColumn(context),
columnSpacing: 32,
dataRowMaxHeight: 52,
rows: <DataRow>[
for (final product in inventory)
DataRow(
cells: <DataCell>[
DataCell(
Text(
product.item,
softWrap: true,
overflow: TextOverflow.ellipsis,
),
),
DataCell(Text('${product.ducats}')),
DataCell(Text('${product.credits}cr')),
],
),
],
),
return ListView.builder(
itemCount: inventory.length,
itemBuilder: (context, index) {
return TraderItemView(traderItem: inventory[index]);
},
);
}
}
Expand Down

0 comments on commit e6dbe4d

Please sign in to comment.