67 lines
2.0 KiB
Dart
67 lines
2.0 KiB
Dart
// Flutter imports:
|
|
import 'package:flutter/material.dart';
|
|
|
|
// Package imports:
|
|
import 'package:flutter_redux/flutter_redux.dart';
|
|
import 'package:intl/intl.dart';
|
|
|
|
// Project imports:
|
|
import 'package:invoiceninja_flutter/data/models/task_model.dart';
|
|
import 'package:invoiceninja_flutter/redux/app/app_state.dart';
|
|
import 'package:invoiceninja_flutter/redux/company/company_selectors.dart';
|
|
import 'package:invoiceninja_flutter/ui/app/live_text.dart';
|
|
import 'package:invoiceninja_flutter/utils/formatting.dart';
|
|
import 'package:invoiceninja_flutter/utils/localization.dart';
|
|
|
|
class TaskTimeListTile extends StatelessWidget {
|
|
const TaskTimeListTile({
|
|
@required this.task,
|
|
@required this.taskTime,
|
|
@required this.onTap,
|
|
@required this.isValid,
|
|
});
|
|
|
|
final Function(BuildContext context) onTap;
|
|
final TaskEntity task;
|
|
final TaskTime taskTime;
|
|
final bool isValid;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
final startDateString = formatDate(
|
|
taskTime.startDate.toIso8601String(), context,
|
|
showTime: true, showDate: false);
|
|
final endDateString = taskTime.endDate != null
|
|
? formatDate(taskTime.endDate.toIso8601String(), context,
|
|
showTime: true, showDate: false)
|
|
: AppLocalization.of(context).now;
|
|
|
|
final state = StoreProvider.of<AppState>(context).state;
|
|
final title = DateFormat('EEE MMM d, yyy', localeSelector(state))
|
|
.format(taskTime.startDate.toLocal());
|
|
|
|
final subtitle = '$startDateString - $endDateString';
|
|
|
|
return Column(
|
|
children: <Widget>[
|
|
ListTile(
|
|
onTap: () => onTap(context),
|
|
title: Row(
|
|
children: <Widget>[
|
|
Expanded(child: Text(title)),
|
|
LiveText(() => formatDuration(taskTime.duration)),
|
|
],
|
|
),
|
|
subtitle: Text(subtitle),
|
|
trailing: onTap != null
|
|
? Icon(isValid ? Icons.navigate_next : Icons.error)
|
|
: null,
|
|
),
|
|
Divider(
|
|
height: 1.0,
|
|
),
|
|
],
|
|
);
|
|
}
|
|
}
|