Purchase slider null safety

This commit is contained in:
Vishesh Handa
2021-05-17 18:29:41 +02:00
parent 73f9db5fab
commit ec14a0bcdc

View File

@ -1,5 +1,3 @@
// @dart=2.9
import 'dart:math'; import 'dart:math';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -12,19 +10,17 @@ class PaymentInfo extends Equatable {
final String text; final String text;
final String id; final String id;
PaymentInfo({@required this.id, @required this.value, @required this.text}); PaymentInfo({required this.id, required this.value, required this.text});
@override @override
List<Object> get props => [value, text, id]; List<Object> get props => [value, text, id];
static PaymentInfo fromProductDetail(ProductDetails pd) { static PaymentInfo? fromProductDetail(ProductDetails pd) {
if (pd == null) return null;
double value = -1; double value = -1;
if (pd.skProduct != null) { if (pd.skProduct != null) {
value = double.parse(pd.skProduct.price); value = double.parse(pd.skProduct!.price);
} else if (pd.skuDetail != null) { } else if (pd.skuDetail != null) {
value = pd.skuDetail.originalPriceAmountMicros.toDouble() / 100000; value = pd.skuDetail!.originalPriceAmountMicros.toDouble() / 100000;
} }
return PaymentInfo( return PaymentInfo(
@ -38,16 +34,16 @@ class PaymentInfo extends Equatable {
typedef PaymentSliderChanged = void Function(PaymentInfo); typedef PaymentSliderChanged = void Function(PaymentInfo);
class PurchaseSlider extends StatelessWidget { class PurchaseSlider extends StatelessWidget {
final List<PaymentInfo> values; final List<PaymentInfo?> values;
final PaymentInfo selectedValue; final PaymentInfo? selectedValue;
final PaymentSliderChanged onChanged; final PaymentSliderChanged onChanged;
PurchaseSlider({ PurchaseSlider({
@required this.values, required this.values,
@required this.selectedValue, required this.selectedValue,
@required this.onChanged, required this.onChanged,
}) { }) {
values.sort((a, b) => a.value.compareTo(b.value)); values.sort((a, b) => a!.value.compareTo(b!.value));
} }
@override @override
@ -67,14 +63,14 @@ class PurchaseSlider extends StatelessWidget {
} }
class ShapePainter extends CustomPainter { class ShapePainter extends CustomPainter {
final List<PaymentInfo> values; final List<PaymentInfo?> values;
final PaymentInfo selectedValue; final PaymentInfo? selectedValue;
final Color color; final Color color;
ShapePainter({ ShapePainter({
@required this.values, required this.values,
@required this.selectedValue, required this.selectedValue,
@required this.color, required this.color,
}); });
@override @override
@ -95,8 +91,8 @@ class ShapePainter extends CustomPainter {
..strokeCap = StrokeCap.round ..strokeCap = StrokeCap.round
..style = PaintingStyle.fill; ..style = PaintingStyle.fill;
var diff = (values.last.value - values.first.value); var diff = (values.last!.value - values.first!.value);
var w = (size.width / diff) * (selectedValue.value - values.first.value); var w = (size.width / diff) * (selectedValue!.value - values.first!.value);
var angle = atan(size.height / size.width); var angle = atan(size.height / size.width);
var h = w * tan(angle); var h = w * tan(angle);