Mobile Client: Reanme app package

This commit is contained in:
Arthi-chaud
2022-02-09 13:54:14 +01:00
parent b8b97535b8
commit 4651bbca47
24 changed files with 289 additions and 290 deletions
+4 -4
View File
@@ -1,8 +1,8 @@
library aeris;
export 'package:mobile/src/views/startup_page.dart';
export 'package:aeris/src/views/startup_page.dart';
export 'package:mobile/src/widgets/overlayed_texts.dart';
export 'package:aeris/src/widgets/overlayed_texts.dart';
export 'package:mobile/src/widgets/background/anim_painter.dart';
export 'package:mobile/src/widgets/background/custom_animation.dart';
export 'package:aeris/src/widgets/background/anim_painter.dart';
export 'package:aeris/src/widgets/background/custom_animation.dart';
+10 -10
View File
@@ -1,15 +1,15 @@
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:form_builder_validators/localization/l10n.dart';
import 'package:mobile/src/providers/pipelines_provider.dart';
import 'package:mobile/src/providers/user_services_provider.dart';
import 'package:mobile/src/views/create_pipeline_page.dart';
import 'package:mobile/src/views/pipeline_detail_page.dart';
import 'package:mobile/src/views/service_page.dart';
import 'package:mobile/src/views/setup_action_page.dart';
import 'package:mobile/src/views/startup_page.dart';
import 'package:mobile/src/views/login_page.dart';
import 'package:mobile/src/views/home_page.dart';
import 'package:mobile/src/constants.dart';
import 'package:aeris/src/providers/pipelines_provider.dart';
import 'package:aeris/src/providers/user_services_provider.dart';
import 'package:aeris/src/views/create_pipeline_page.dart';
import 'package:aeris/src/views/pipeline_detail_page.dart';
import 'package:aeris/src/views/service_page.dart';
import 'package:aeris/src/views/setup_action_page.dart';
import 'package:aeris/src/views/startup_page.dart';
import 'package:aeris/src/views/login_page.dart';
import 'package:aeris/src/views/home_page.dart';
import 'package:aeris/src/constants.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+1 -2
View File
@@ -1,5 +1,5 @@
import 'package:flutter/widgets.dart';
import 'package:mobile/src/models/service.dart';
import 'package:aeris/src/models/service.dart';
///Base class for reactions and trigger
abstract class Action {
@@ -16,5 +16,4 @@ abstract class Action {
required this.service,
required this.name,
this.parameters = const {}});
}
+2 -2
View File
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/models/reaction.dart';
import 'package:mobile/src/models/trigger.dart';
import 'package:aeris/src/models/reaction.dart';
import 'package:aeris/src/models/trigger.dart';
/// Object representation of a pipeline
class Pipeline {
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/models/pipeline.dart';
import 'package:aeris/src/models/pipeline.dart';
///
enum PipelineCollectionSort { last, triggerCount, name, triggeringService }
@@ -30,7 +30,8 @@ class PipelineCollection {
int Function(Pipeline, Pipeline) sortingFunction;
enabled = pipelines.where((pipeline) => pipeline.enabled).toList();
disabled = pipelines.where((pipeline) => pipeline.enabled == false).toList();
disabled =
pipelines.where((pipeline) => pipeline.enabled == false).toList();
if (sortingSplitDisabled == false) {
enabled.addAll(disabled);
disabled.clear();
+9 -7
View File
@@ -1,6 +1,6 @@
import 'package:mobile/src/models/action.dart' as aeris_action;
import 'package:aeris/src/models/action.dart' as aeris_action;
import 'package:flutter/widgets.dart';
import 'package:mobile/src/models/service.dart';
import 'package:aeris/src/models/service.dart';
///Object representation of a reaction
class Reaction extends aeris_action.Action {
@@ -10,16 +10,18 @@ class Reaction extends aeris_action.Action {
required String name,
Map<String, Object> parameters = const {}})
: super(service: service, name: name, parameters: parameters);
/// Template trigger, used as an 'empty' trigger
Reaction.template(): super(service: Service.all()[0], name: '', parameters: {});
@override
/// Template trigger, used as an 'empty' trigger
Reaction.template()
: super(service: Service.all()[0], name: '', parameters: {});
@override
bool operator ==(Object other) {
Reaction otherReaction = other as Reaction;
return service.name == otherReaction.service.name &&
name == otherReaction.name &&
parameters.values.toString() == otherReaction.parameters.values.toString() &&
parameters.values.toString() ==
otherReaction.parameters.values.toString() &&
parameters.keys.toString() == otherReaction.parameters.keys.toString();
}
}
+3 -3
View File
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/main.dart';
import 'package:mobile/src/models/service.dart';
import 'package:mobile/src/models/action.dart' as aeris_action;
import 'package:aeris/src/main.dart';
import 'package:aeris/src/models/service.dart';
import 'package:aeris/src/models/action.dart' as aeris_action;
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
///Object representation of a pipeline trigger
+6 -7
View File
@@ -1,9 +1,8 @@
// Class for a service related to a user (Youtube, Gmail, ...)
import 'package:mobile/src/models/service.dart';
import 'package:aeris/src/models/service.dart';
import 'package:flutter/cupertino.dart';
class UserService {
/// Service name related to the user
final Service serviceProvider;
@@ -21,9 +20,9 @@ class UserService {
UserService(
{Key? key,
required this.serviceAccountId,
required this.accountUsername,
required this.accountSlug,
required this.userExternalToken,
required this.serviceProvider});
required this.serviceAccountId,
required this.accountUsername,
required this.accountSlug,
required this.userExternalToken,
required this.serviceProvider});
}
@@ -1,9 +1,9 @@
import 'package:mobile/src/models/pipeline.dart';
import 'package:aeris/src/models/pipeline.dart';
import 'package:flutter/cupertino.dart';
import 'package:mobile/src/models/pipeline_collection.dart';
import 'package:mobile/src/models/reaction.dart';
import 'package:mobile/src/models/service.dart';
import 'package:mobile/src/models/trigger.dart';
import 'package:aeris/src/models/pipeline_collection.dart';
import 'package:aeris/src/models/reaction.dart';
import 'package:aeris/src/models/service.dart';
import 'package:aeris/src/models/trigger.dart';
/// Provider class for Pipelines
class PipelineProvider extends ChangeNotifier {
@@ -1,10 +1,9 @@
import 'package:mobile/src/models/user_service.dart';
import 'package:mobile/src/models/service.dart';
import 'package:aeris/src/models/user_service.dart';
import 'package:aeris/src/models/service.dart';
import 'package:flutter/cupertino.dart';
/// Provider used to store every Service related to the User
class UserServiceProvider extends ChangeNotifier {
/// List of [Service] related to the user
List<UserService> userServices = [];
@@ -15,14 +14,17 @@ class UserServiceProvider extends ChangeNotifier {
}
/// Creates a new service related to the user
createUserService(Service serviceToSet, {String accountId = "", String accUsername = "", String accountSlug = "", String externalToken = ""}) {
createUserService(Service serviceToSet,
{String accountId = "",
String accUsername = "",
String accountSlug = "",
String externalToken = ""}) {
UserService newService = UserService(
serviceAccountId: accountId,
accountUsername: accUsername,
accountSlug: accountSlug,
userExternalToken: externalToken,
serviceProvider: serviceToSet
);
serviceAccountId: accountId,
accountUsername: accUsername,
accountSlug: accountSlug,
userExternalToken: externalToken,
serviceProvider: serviceToSet);
userServices.add(newService);
// notifyListeners(); /// TODO Get the notifyListeners method back.
}
@@ -35,18 +37,19 @@ class UserServiceProvider extends ChangeNotifier {
}
/// Modifies a service given as argument
modifyService(UserService toModify, String serviceAccountId, String accountUsername, String accountSlug, String userExternalToken) {
modifyService(UserService toModify, String serviceAccountId,
String accountUsername, String accountSlug, String userExternalToken) {
for (int i = 0; i < userServices.length; i++) {
if (userServices[i].serviceProvider.name == toModify.serviceProvider.name &&
if (userServices[i].serviceProvider.name ==
toModify.serviceProvider.name &&
userServices[i].serviceAccountId == toModify.serviceAccountId &&
userServices[i].userExternalToken == toModify.userExternalToken) {
UserService newService = UserService(
serviceProvider: userServices[i].serviceProvider,
serviceAccountId: serviceAccountId,
accountUsername: accountUsername,
accountSlug: accountSlug,
userExternalToken: userExternalToken
);
serviceProvider: userServices[i].serviceProvider,
serviceAccountId: serviceAccountId,
accountUsername: accountUsername,
accountSlug: accountSlug,
userExternalToken: userExternalToken);
userServices[i] = newService;
notifyListeners();
return true;
@@ -74,4 +77,4 @@ class UserServiceProvider extends ChangeNotifier {
userServices.clear();
notifyListeners();
}
}
}
+10 -10
View File
@@ -1,16 +1,16 @@
import 'package:flutter/material.dart';
import 'package:form_builder_validators/form_builder_validators.dart';
import 'package:mobile/src/models/pipeline.dart';
import 'package:mobile/src/models/reaction.dart';
import 'package:mobile/src/models/trigger.dart';
import 'package:mobile/src/providers/pipelines_provider.dart';
import 'package:mobile/src/views/pipeline_detail_page.dart';
import 'package:mobile/src/views/setup_action_page.dart';
import 'package:mobile/src/widgets/action_card.dart';
import 'package:mobile/src/widgets/action_card_popup_menu.dart';
import 'package:mobile/src/widgets/aeris_card_page.dart';
import 'package:aeris/src/models/pipeline.dart';
import 'package:aeris/src/models/reaction.dart';
import 'package:aeris/src/models/trigger.dart';
import 'package:aeris/src/providers/pipelines_provider.dart';
import 'package:aeris/src/views/pipeline_detail_page.dart';
import 'package:aeris/src/views/setup_action_page.dart';
import 'package:aeris/src/widgets/action_card.dart';
import 'package:aeris/src/widgets/action_card_popup_menu.dart';
import 'package:aeris/src/widgets/aeris_card_page.dart';
import 'package:flutter_form_builder/flutter_form_builder.dart';
import 'package:mobile/src/widgets/colored_clickable_card.dart';
import 'package:aeris/src/widgets/colored_clickable_card.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+77 -71
View File
@@ -1,12 +1,12 @@
import 'dart:ui';
import 'package:flutter/material.dart';
import 'package:mobile/src/providers/pipelines_provider.dart';
import 'package:mobile/src/widgets/aeris_page.dart';
import 'package:mobile/src/widgets/home_page_menu.dart';
import 'package:mobile/src/widgets/clickable_card.dart';
import 'package:mobile/src/widgets/home_page_sort_menu.dart';
import 'package:mobile/src/widgets/loading_widget.dart';
import 'package:mobile/src/widgets/pipeline_card.dart';
import 'package:aeris/src/providers/pipelines_provider.dart';
import 'package:aeris/src/widgets/aeris_page.dart';
import 'package:aeris/src/widgets/home_page_menu.dart';
import 'package:aeris/src/widgets/clickable_card.dart';
import 'package:aeris/src/widgets/home_page_sort_menu.dart';
import 'package:aeris/src/widgets/loading_widget.dart';
import 'package:aeris/src/widgets/pipeline_card.dart';
import 'package:provider/provider.dart';
/// [StatefulWidget] used to display [HomePage] interface
@@ -25,70 +25,76 @@ class _HomePageState extends State<HomePage> {
Widget build(BuildContext context) {
ScrollController listController = ScrollController();
return Consumer<PipelineProvider>(
builder: (context, provider, _) => AerisPage(
actions: [
HomePageSortMenu(
collectionProvider: provider,
),
const HomePageMenu()
],
body: NotificationListener<ScrollEndNotification>(
onNotification: (notification) {
if (listController.position.atEdge) {
if (listController.position.pixels == 0) {
print("Loading");
setState(() {
loading = true;
});
Future.delayed(const Duration(seconds: 2)).then((_) => setState(() {
loading = false;
print("Loaded");
}));
// TODO Call API
}
}
return true;
},
child: Stack(
children: [
ListView.builder(
padding: const EdgeInsets.only(top: 20, bottom: 20, left: 10, right: 10),
controller: listController,
itemCount: provider.pipelineCollection.pipelines.length + 1,
itemBuilder: (BuildContext context, int index) {
if (index == provider.pipelineCollection.pipelines.length) {
return ClickableCard(
color: Theme.of(context).colorScheme.secondary,
body: Padding(
padding: const EdgeInsets.only(top: 20, bottom: 20),
child: Text("Create a pipeline",
textAlign: TextAlign.center,
style: TextStyle(
color: Theme.of(context).colorScheme.onSecondary,
fontSize: 20,
fontWeight: FontWeight.w600
)
),
builder: (context, provider, _) => AerisPage(
actions: [
HomePageSortMenu(
collectionProvider: provider,
),
const HomePageMenu()
],
body: NotificationListener<ScrollEndNotification>(
onNotification: (notification) {
if (listController.position.atEdge) {
if (listController.position.pixels == 0) {
print("Loading");
setState(() {
loading = true;
});
Future.delayed(const Duration(seconds: 2))
.then((_) => setState(() {
loading = false;
print("Loaded");
}));
// TODO Call API
}
}
return true;
},
child: Stack(
children: [
ListView.builder(
padding: const EdgeInsets.only(
top: 20, bottom: 20, left: 10, right: 10),
controller: listController,
itemCount:
provider.pipelineCollection.pipelines.length + 1,
itemBuilder: (BuildContext context, int index) {
if (index ==
provider.pipelineCollection.pipelines.length) {
return ClickableCard(
color: Theme.of(context).colorScheme.secondary,
body: Padding(
padding:
const EdgeInsets.only(top: 20, bottom: 20),
child: Text("Create a pipeline",
textAlign: TextAlign.center,
style: TextStyle(
color: Theme.of(context)
.colorScheme
.onSecondary,
fontSize: 20,
fontWeight: FontWeight.w600)),
),
onTap: () {
Navigator.of(context)
.pushNamed('/pipeline/new');
},
);
}
return PipelineCard(
pipeline:
provider.pipelineCollection.pipelines[index]);
},
),
onTap: () {
Navigator.of(context).pushNamed('/pipeline/new');
},
);
}
return PipelineCard(
pipeline: provider.pipelineCollection.pipelines[index]
);
},
),
loading ? BackdropFilter(
filter: ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
child: Container()
) : Container(),
loading ? const LoadingWidget() : Container()
],
)
),
)
);
loading
? BackdropFilter(
filter:
ImageFilter.blur(sigmaX: 5.0, sigmaY: 5.0),
child: Container())
: Container(),
loading ? const LoadingWidget() : Container()
],
)),
));
}
}
+4 -3
View File
@@ -1,5 +1,5 @@
import 'package:mobile/src/main.dart';
import 'package:mobile/src/widgets/aeris_page.dart';
import 'package:aeris/src/main.dart';
import 'package:aeris/src/widgets/aeris_page.dart';
import 'package:flutter_login/flutter_login.dart';
import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -45,7 +45,8 @@ class LoginPage extends StatelessWidget {
debugPrint('Name: $name');
return Future.delayed(loginDuration).then((_) {
if (!users.containsKey(name)) {
return AppLocalizations.of(Aeris.materialKey.currentContext!).userDoesNotExist;
return AppLocalizations.of(Aeris.materialKey.currentContext!)
.userDoesNotExist;
}
return null;
});
+10 -10
View File
@@ -1,14 +1,14 @@
import 'package:mobile/src/main.dart';
import 'package:mobile/src/providers/pipelines_provider.dart';
import 'package:mobile/src/views/setup_action_page.dart';
import 'package:mobile/src/widgets/action_card_popup_menu.dart';
import 'package:mobile/src/widgets/aeris_card_page.dart';
import 'package:mobile/src/widgets/colored_clickable_card.dart';
import 'package:mobile/src/widgets/warning_dialog.dart';
import 'package:mobile/src/widgets/action_card.dart';
import 'package:aeris/src/main.dart';
import 'package:aeris/src/providers/pipelines_provider.dart';
import 'package:aeris/src/views/setup_action_page.dart';
import 'package:aeris/src/widgets/action_card_popup_menu.dart';
import 'package:aeris/src/widgets/aeris_card_page.dart';
import 'package:aeris/src/widgets/colored_clickable_card.dart';
import 'package:aeris/src/widgets/warning_dialog.dart';
import 'package:aeris/src/widgets/action_card.dart';
import 'package:flutter_switch/flutter_switch.dart';
import 'package:mobile/src/models/reaction.dart';
import 'package:mobile/src/models/pipeline.dart';
import 'package:aeris/src/models/reaction.dart';
import 'package:aeris/src/models/pipeline.dart';
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+9 -8
View File
@@ -1,12 +1,12 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/models/pipeline.dart';
import 'package:mobile/src/models/reaction.dart';
import 'package:mobile/src/models/service.dart';
import 'package:mobile/src/providers/pipelines_provider.dart';
import 'package:mobile/src/providers/user_services_provider.dart';
import 'package:mobile/src/widgets/action_card.dart';
import 'package:mobile/src/widgets/aeris_card_page.dart';
import 'package:mobile/src/widgets/warning_dialog.dart';
import 'package:aeris/src/models/pipeline.dart';
import 'package:aeris/src/models/reaction.dart';
import 'package:aeris/src/models/service.dart';
import 'package:aeris/src/providers/pipelines_provider.dart';
import 'package:aeris/src/providers/user_services_provider.dart';
import 'package:aeris/src/widgets/action_card.dart';
import 'package:aeris/src/widgets/aeris_card_page.dart';
import 'package:aeris/src/widgets/warning_dialog.dart';
import 'package:provider/provider.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -93,6 +93,7 @@ class ServicePage extends StatelessWidget {
}
return false;
}),
/// TODO Remove service from provider
provider.notifyListeners(),
print("Disconnect")
+5 -5
View File
@@ -1,9 +1,9 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/models/action.dart' as aeris;
import 'package:mobile/src/models/service.dart';
import 'package:mobile/src/models/trigger.dart';
import 'package:mobile/src/widgets/action_form.dart';
import 'package:mobile/src/widgets/aeris_card_page.dart';
import 'package:aeris/src/models/action.dart' as aeris;
import 'package:aeris/src/models/service.dart';
import 'package:aeris/src/models/trigger.dart';
import 'package:aeris/src/widgets/action_form.dart';
import 'package:aeris/src/widgets/aeris_card_page.dart';
import 'package:expandable/expandable.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/views/setup_action_page.dart';
import 'package:mobile/src/widgets/aeris_popup_menu.dart';
import 'package:mobile/src/widgets/aeris_popup_menu_item.dart';
import 'package:mobile/src/models/action.dart' as aeris;
import 'package:aeris/src/views/setup_action_page.dart';
import 'package:aeris/src/widgets/aeris_popup_menu.dart';
import 'package:aeris/src/widgets/aeris_popup_menu_item.dart';
import 'package:aeris/src/models/action.dart' as aeris;
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
/// [StatelessWidget] displayed as a PopupMenu
@@ -36,6 +36,7 @@ class ActionCardPopupMenu extends StatelessWidget {
onSelected: (value) {
if (value == '/pipeline/action/del') {
onDelete!();
///TODO delete from db
} else {
Map object = value as Map;
+19 -18
View File
@@ -1,6 +1,7 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/widgets/background/animated_background.dart';
import 'package:aeris/src/widgets/background/animated_background.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
/// Application base page, holds scaffold and background
class AerisPage extends StatelessWidget {
/// Body of the page
@@ -23,24 +24,24 @@ class AerisPage extends StatelessWidget {
return Scaffold(
resizeToAvoidBottomInset: false,
body: SizedBox(
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Stack(children: <Widget>[const AnimatedBackground(), body])
),
width: MediaQuery.of(context).size.width,
height: MediaQuery.of(context).size.height,
child: Stack(children: <Widget>[const AnimatedBackground(), body])),
backgroundColor: Theme.of(context).colorScheme.primary,
appBar: displayAppbar ? AppBar(
title: const Text("AERIS"),
centerTitle: true,
elevation: 0,
leading: Container(),
actions: [
for (Widget action in actions)
Padding(
child: action,
padding: const EdgeInsets.only(right: 10.0)
),
],
) : null,
appBar: displayAppbar
? AppBar(
title: const Text("AERIS"),
centerTitle: true,
elevation: 0,
leading: Container(),
actions: [
for (Widget action in actions)
Padding(
child: action,
padding: const EdgeInsets.only(right: 10.0)),
],
)
: null,
);
}
}
@@ -1,5 +1,5 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/widgets/clickable_card.dart';
import 'package:aeris/src/widgets/clickable_card.dart';
/// Clickable card with simple text and color
class ColoredClickableCard extends StatelessWidget {
@@ -11,28 +11,23 @@ class ColoredClickableCard extends StatelessWidget {
final void Function() onTap;
const ColoredClickableCard(
{Key? key,
required this.text,
required this.color,
required this.onTap
}) : super(key: key);
{Key? key, required this.text, required this.color, required this.onTap})
: super(key: key);
@override
Widget build(BuildContext context) => ClickableCard(
color: color,
elevation: 5,
body: Container(
child: Text(
text,
textAlign: TextAlign.center,
style: TextStyle(
color: Theme.of(context).colorScheme.onSecondary,
fontSize: 20,
fontWeight: FontWeight.w600
),
),
width: double.infinity,
padding: const EdgeInsets.only(top: 15, bottom: 15)),
onTap: onTap
);
color: color,
elevation: 5,
body: Container(
child: Text(
text,
textAlign: TextAlign.center,
style: TextStyle(
color: Theme.of(context).colorScheme.onSecondary,
fontSize: 20,
fontWeight: FontWeight.w600),
),
width: double.infinity,
padding: const EdgeInsets.only(top: 15, bottom: 15)),
onTap: onTap);
}
+2 -3
View File
@@ -1,6 +1,6 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/widgets/aeris_popup_menu.dart';
import 'package:mobile/src/widgets/aeris_popup_menu_item.dart';
import 'package:aeris/src/widgets/aeris_popup_menu.dart';
import 'package:aeris/src/widgets/aeris_popup_menu_item.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
/// Menu for the Home Page
@@ -17,7 +17,6 @@ class HomePageMenu extends StatelessWidget {
title: AppLocalizations.of(context).services,
value: "/services"),
AerisPopupMenuItem(
context: context,
icon: Icons.logout,
title: AppLocalizations.of(context).logout,
@@ -1,8 +1,8 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/models/pipeline_collection.dart';
import 'package:mobile/src/providers/pipelines_provider.dart';
import 'package:mobile/src/widgets/aeris_popup_menu.dart';
import 'package:mobile/src/widgets/aeris_popup_menu_item.dart';
import 'package:aeris/src/models/pipeline_collection.dart';
import 'package:aeris/src/providers/pipelines_provider.dart';
import 'package:aeris/src/widgets/aeris_popup_menu.dart';
import 'package:aeris/src/widgets/aeris_popup_menu_item.dart';
import 'package:recase/recase.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
+60 -69
View File
@@ -1,7 +1,7 @@
import 'package:flutter/material.dart';
import 'package:mobile/src/models/pipeline.dart';
import 'package:mobile/src/views/pipeline_detail_page.dart';
import 'package:mobile/src/widgets/clickable_card.dart';
import 'package:aeris/src/models/pipeline.dart';
import 'package:aeris/src/views/pipeline_detail_page.dart';
import 'package:aeris/src/widgets/clickable_card.dart';
/// Widget for Action-reaction card on home page
class PipelineCard extends StatefulWidget {
@@ -26,71 +26,62 @@ class _PipelineCardState extends State<PipelineCard> {
array + [logo, const SizedBox(height: 5)]).toList();
reactionLogos.removeLast();
return ClickableCard(
onTap: () {
Navigator.pushNamed(context, '/pipeline', arguments: PipelineDetailPageArguments(widget.pipeline)).then((value) => setState(() {}));
},
color: widget.pipeline.enabled == false
? const Color.fromARGB(115, 34, 34, 34).withOpacity(0.8)
: null,
body: Container(
width: double.infinity,
padding: const EdgeInsets.only(top: 20, bottom: 20, left: 40),
child: Row(
children: [
Expanded(
flex: 4,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(widget.pipeline.name,
style: TextStyle(
fontSize: 25,
color: Theme.of(context).colorScheme.onSurface,
)
),
const SizedBox(height: 10),
Text(widget.pipeline.trigger.lastToString(),
style: TextStyle(
color: widget.pipeline.enabled == false
? Theme.of(context).colorScheme.onSurface
: const Color.fromARGB(255, 83, 83, 83),
fontSize: 15
)
),
],
)
),
Expanded(
flex: 4,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
widget.pipeline.trigger.service.getLogo(),
const SizedBox(width: 10),
Icon(
Icons.arrow_forward,
color: Theme.of(context).colorScheme.onSurface,
),
const SizedBox(width: 10),
Column(children: reactionLogos)
]
)
),
Expanded(
flex: 2,
child: Column(
children: [
Icon(
Icons.arrow_forward_ios,
color: Theme.of(context).colorScheme.onSurface,
)
],
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center)
),
]
)
)
);
onTap: () {
Navigator.pushNamed(context, '/pipeline',
arguments: PipelineDetailPageArguments(widget.pipeline))
.then((value) => setState(() {}));
},
color: widget.pipeline.enabled == false
? const Color.fromARGB(115, 34, 34, 34).withOpacity(0.8)
: null,
body: Container(
width: double.infinity,
padding: const EdgeInsets.only(top: 20, bottom: 20, left: 40),
child: Row(children: [
Expanded(
flex: 4,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(widget.pipeline.name,
style: TextStyle(
fontSize: 25,
color: Theme.of(context).colorScheme.onSurface,
)),
const SizedBox(height: 10),
Text(widget.pipeline.trigger.lastToString(),
style: TextStyle(
color: widget.pipeline.enabled == false
? Theme.of(context).colorScheme.onSurface
: const Color.fromARGB(255, 83, 83, 83),
fontSize: 15)),
],
)),
Expanded(
flex: 4,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
widget.pipeline.trigger.service.getLogo(),
const SizedBox(width: 10),
Icon(
Icons.arrow_forward,
color: Theme.of(context).colorScheme.onSurface,
),
const SizedBox(width: 10),
Column(children: reactionLogos)
])),
Expanded(
flex: 2,
child: Column(
children: [
Icon(
Icons.arrow_forward_ios,
color: Theme.of(context).colorScheme.onSurface,
)
],
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center)),
])));
}
}
+1 -1
View File
@@ -1,4 +1,4 @@
name: mobile
name: aeris
description: Mobile application for Aeris
# The following line prevents the package from being accidentally published to
+1 -1
View File
@@ -7,7 +7,7 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:mobile/src/main.dart';
import 'package:aeris/src/main.dart';
void main() {
testWidgets('Counter increments smoke test', (WidgetTester tester) async {