show static method

Future<void> show(
  1. BuildContext context, {
  2. required String address,
  3. required String location,
  4. required double foreclosureProbability,
  5. required String foreclosureLabel,
  6. String? acquisitionPath,
  7. int yearsDelinquent = 0,
  8. required double estimatedValue,
  9. required double lienCost,
  10. required double totalCost,
  11. required double roi,
  12. required double fvi,
  13. double? karmaScore,
  14. double? x1000Score,
  15. Widget? note,
  16. Map<String, String> metrics = const {},
})

Shows the sheet.

Implementation

static Future<void> show(
  BuildContext context, {
  required String address,
  required String location,
  required double foreclosureProbability,
  required String foreclosureLabel,
  String? acquisitionPath,
  int yearsDelinquent = 0,
  required double estimatedValue,
  required double lienCost,
  required double totalCost,
  required double roi,
  required double fvi,
  double? karmaScore,
  double? x1000Score,
  Widget? note,
  Map<String, String> metrics = const {},
}) {
  final l = NmRealEstate.l10n(context);
  final tone = foreclosureProbability >= .7
      ? NmTone.success
      : foreclosureProbability >= .4
      ? NmTone.warning
      : NmTone.danger;
  return NmDetailsSheet.show(
    context,
    title: address,
    subtitle: location,
    sections: [
      NmDetailSection(
        title: l.finForeclosure,
        rows: [
          NmDetailRow.widget(l.finForeclosureProb, NmPill('${(foreclosureProbability * 100).toStringAsFixed(0)}% $foreclosureLabel', tone: tone)),
          if (acquisitionPath != null) NmDetailRow(l.finAcquisitionPath, acquisitionPath),
          if (yearsDelinquent > 0) NmDetailRow(l.finYearsDelinquentLabel, l.finYearsDelinquent(yearsDelinquent)),
        ],
      ),
      NmDetailSection(
        title: l.finBreakdown,
        rows: [
          NmDetailRow(l.propertyEstValue, _money(estimatedValue)),
          NmDetailRow(l.finLienCost, _money(lienCost)),
          NmDetailRow(l.finTotalCost, _money(totalCost)),
          NmDetailRow(l.finRoi, '${(roi * 100).toStringAsFixed(1)}%'),
        ],
      ),
      NmDetailSection(
        title: l.finValue,
        rows: [
          NmDetailRow('FVI', fvi.toStringAsFixed(1)),
          if (karmaScore != null) NmDetailRow(l.finKarma, karmaScore.toStringAsFixed(1)),
          if (x1000Score != null && x1000Score >= 5)
            NmDetailRow.widget(l.finX1000, NmPill('${x1000Score.toStringAsFixed(1)}/10', tone: NmTone.brand, icon: NmFugue.diamond)),
        ],
        note: note,
      ),
      if (metrics.isNotEmpty) NmDetailSection(title: l.finExpertMetrics, rows: [for (final e in metrics.entries) NmDetailRow(e.key, e.value)]),
    ],
  );
}