invoice/lib/ui/task/task_time_view.dart

63 lines
1.9 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,
});
final Function(BuildContext context) onTap;
final TaskEntity task;
final TaskTime taskTime;
@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(Icons.navigate_next) : null,
),
Divider(
height: 1.0,
),
],
);
}
}