Feature/default duration setting (#7)
* Implemented Basic Duration Settings into AppSettings Model * Implemented Basic Duration Settings into AppSettings Model * Created Duration Settings Widget and Started using ViewModel in HomeSettingsTab * Updated Version Number
This commit is contained in:
committed by
GitHub
parent
b520d56d1a
commit
90f2998088
@ -1,39 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class DirectSelectItem extends StatelessWidget {
|
||||
final String title;
|
||||
final bool isForList;
|
||||
|
||||
DirectSelectItem({this.title, this.isForList});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SizedBox(
|
||||
height: 60,
|
||||
child: isForList
|
||||
? Padding(
|
||||
child: _buildItem(context),
|
||||
padding: EdgeInsets.all(10),
|
||||
)
|
||||
: Card(
|
||||
margin: EdgeInsets.symmetric(horizontal: 10),
|
||||
child: Stack(
|
||||
children: [
|
||||
_buildItem(context),
|
||||
Align(
|
||||
alignment: Alignment.centerRight,
|
||||
child: Icon(Icons.arrow_drop_down),
|
||||
)
|
||||
],
|
||||
),
|
||||
));
|
||||
}
|
||||
|
||||
Container _buildItem(BuildContext context) {
|
||||
return Container(
|
||||
width: MediaQuery.of(context).size.width,
|
||||
alignment: Alignment.center,
|
||||
child: Text(title),
|
||||
);
|
||||
}
|
||||
}
|
61
lib/widgets/home/tabs/settings/duration_settings_widget.dart
Normal file
61
lib/widgets/home/tabs/settings/duration_settings_widget.dart
Normal file
@ -0,0 +1,61 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_picker/flutter_picker.dart';
|
||||
|
||||
class DurationSettingsWidget extends StatelessWidget {
|
||||
final Duration duration;
|
||||
final void Function(Duration) updateDuration;
|
||||
|
||||
DurationSettingsWidget({
|
||||
@required this.duration,
|
||||
@required this.updateDuration,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
int years = duration.inDays ~/ 365;
|
||||
int months = (duration.inDays - (365 * years)) ~/ 30;
|
||||
int days = duration.inDays - (365 * years) - (30 * months);
|
||||
return Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child: TextButton(
|
||||
onPressed: () {
|
||||
Picker(
|
||||
adapter: NumberPickerAdapter(
|
||||
data: [
|
||||
const NumberPickerColumn(
|
||||
begin: 0,
|
||||
end: 999,
|
||||
suffix: Text(" Y"),
|
||||
),
|
||||
const NumberPickerColumn(
|
||||
begin: 0,
|
||||
end: 11,
|
||||
suffix: Text(" M"),
|
||||
),
|
||||
const NumberPickerColumn(
|
||||
begin: 0,
|
||||
end: 30,
|
||||
suffix: Text(" D"),
|
||||
),
|
||||
],
|
||||
),
|
||||
hideHeader: true,
|
||||
confirmText: "OK",
|
||||
title: const Text("Select Duration"),
|
||||
selectedTextStyle: TextStyle(color: Colors.blue),
|
||||
onConfirm: (Picker picker, List<int> value) {
|
||||
int years = value[0], months = value[1], days = value[2];
|
||||
days = (years * 365) + (months * 30) + days;
|
||||
Duration newDuration = Duration(days: days);
|
||||
updateDuration(newDuration);
|
||||
},
|
||||
).showDialog(context);
|
||||
},
|
||||
child: Text("Default Duration: $years Y - $months M - $days D"),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user