// Copyright 2019 The Flutter team. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:gallery/l10n/gallery_localizations.dart'; import 'package:gallery/layout/adaptive.dart'; import 'package:gallery/studies/rally/charts/pie_chart.dart'; import 'package:gallery/studies/rally/colors.dart'; import 'package:gallery/studies/rally/data.dart'; import 'package:gallery/studies/rally/finance.dart'; /// A page that shows a summary of accounts. class AccountsView extends StatelessWidget { @override Widget build(BuildContext context) { final items = DummyDataService.getAccountDataList(context); final detailItems = DummyDataService.getAccountDetailList(context); final balanceTotal = sumAccountDataPrimaryAmount(items); final view = FinancialEntityView( heroLabel: GalleryLocalizations.of(context).rallyAccountTotal, heroAmount: balanceTotal, segments: buildSegmentsFromAccountItems(items), wholeAmount: balanceTotal, financialEntityCards: buildAccountDataListViews(items, context), ); if (isDisplayDesktop(context)) { return Row( children: [ Flexible( flex: 2, child: SingleChildScrollView( child: Padding( padding: const EdgeInsets.symmetric(vertical: 24), child: view, ), ), ), Expanded( flex: 1, child: Container( color: RallyColors.inputBackground, padding: EdgeInsetsDirectional.only(start: 24), height: double.infinity, alignment: AlignmentDirectional.centerStart, child: ListView( shrinkWrap: true, children: [ for (AccountDetailData item in detailItems) _AccountDetail(title: item.title, value: item.value), ], ), ), ), ], ); } else { return SingleChildScrollView(child: view); } } } class _AccountDetail extends StatelessWidget { const _AccountDetail({Key key, this.value, this.title}) : super(key: key); final String value; final String title; @override Widget build(BuildContext context) { final textTheme = Theme.of(context).textTheme; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 8), Text( title, style: textTheme.body1.copyWith(fontSize: 16, color: RallyColors.gray60), ), SizedBox(height: 8), Text( value, style: textTheme.body2.copyWith(fontSize: 20), ), SizedBox(height: 8), Container(color: RallyColors.primaryBackground, height: 1), ], ); } }