You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.
cyberwow/cyberwow/lib/widget/synced.dart

185 lines
4.6 KiB

5 years ago
/*
Copyright 2019 fuwa
This file is part of CyberWOW.
CyberWOW is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
CyberWOW is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with CyberWOW. If not, see <https://www.gnu.org/licenses/>.
*/
import 'package:flutter/material.dart';
import '../state.dart';
import '../config.dart';
import '../helper.dart';
5 years ago
Widget summary(SyncedState state) {
5 years ago
return Container
(
padding: EdgeInsets.only(bottom: 10.0),
color: config.backgroundColor,
child: Align
5 years ago
(
5 years ago
alignment: Alignment.center,
child: Column
5 years ago
(
5 years ago
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>
[
Spacer
(
flex: 17,
),
Image.asset
('assets/wownero_symbol.png',
height: 220,
),
Spacer
(
flex: 7,
),
Expanded
(
flex: 15,
child: AnimatedSwitcher
(
5 years ago
duration: Duration(milliseconds: 500),
child: Text
5 years ago
(
5 years ago
'${state.height}',
style: TextStyle
5 years ago
(
5 years ago
fontFamily: 'RobotoMono',
fontSize: 35,
fontWeight: FontWeight.bold,
color: config.textColor,
),
key: ValueKey<int>(state.height),
5 years ago
)
5 years ago
)
),
Spacer
(
flex: 1,
),
SizedBox
(
height: 20.0,
width: 20.0,
child: (state.connected) ?
Container() :
CircularProgressIndicator
(
5 years ago
strokeWidth: 2,
),
5 years ago
),
],
5 years ago
),
),
);
}
5 years ago
Widget rpcView(String title, String body) {
return Container
(
5 years ago
padding: const EdgeInsets.all(10.0),
color: config.backgroundColor,
child: Align
(
alignment: Alignment.topLeft,
child: Column
(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>
[
Expanded
(
flex: 1,
child: SingleChildScrollView
(
scrollDirection: Axis.vertical,
child: Column
5 years ago
(
children: <Widget>
[
Container(
height: 0,
margin: const EdgeInsets.only(bottom: 15),
),
Text
(
title,
style: TextStyle
(
fontFamily: 'RobotoMono',
fontSize: 35,
fontWeight: FontWeight.bold,
color: config.textColor,
),
),
Container(
height: 1,
color: config.textColor,
margin: const EdgeInsets.only(bottom: 20, top: 20),
),
Text
(
body,
style: TextStyle
(
fontFamily: 'RobotoMono',
fontSize: 11,
color: config.textColor,
),
)
],
5 years ago
)
)
)
],
),
),
);
}
Widget getInfo(SyncedState state) => rpcView('info', state.getInfo);
Widget getConnections(SyncedState state) =>
rpcView('connections', pretty(state.getConnections));
Widget syncInfo(SyncedState state) => rpcView('sync info', state.syncInfo);
Widget getTransactionPool(SyncedState state) =>
rpcView('tx pool', pretty(state.getTransactionPool));
Widget pageView (SyncedState state, PageController controller) {
return PageView (
controller: controller,
children:
[
5 years ago
summary(state),
5 years ago
getTransactionPool(state),
5 years ago
getInfo(state),
getConnections(state),
// syncInfo(state),
],
);
}
5 years ago
Widget buildSynced(BuildContext context, SyncedState state, PageController controller) {
return Scaffold
(
body: pageView(state, controller)
5 years ago
);
}