mirror of
https://bitbucket.org/FransoletThomas/tablet-app.git
synced 2025-12-06 08:31:19 +00:00
Add loading comon + docker file + update opacity and layout for main menu
This commit is contained in:
parent
47056aec7c
commit
042e1196c9
23
Dockerfile
Normal file
23
Dockerfile
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#Stage 1 - Install dependencies and build the app in a build environment
|
||||||
|
FROM debian:latest AS build-env
|
||||||
|
# Install flutter dependencies
|
||||||
|
RUN apt-get update
|
||||||
|
RUN apt-get install -y curl git wget unzip libgconf-2-4 gdb libstdc++6 libglu1-mesa fonts-droid-fallback lib32stdc++6 python3 sed
|
||||||
|
RUN apt-get clean
|
||||||
|
# Clone the flutter repo
|
||||||
|
RUN git clone https://github.com/flutter/flutter.git /usr/local/flutter
|
||||||
|
# Set flutter path
|
||||||
|
ENV PATH="${PATH}:/usr/local/flutter/bin:/usr/local/flutter/bin/cache/dart-sdk/bin"
|
||||||
|
# Run flutter doctor
|
||||||
|
RUN flutter doctor -v
|
||||||
|
RUN flutter channel master
|
||||||
|
RUN flutter upgrade
|
||||||
|
# Copy files to container and build
|
||||||
|
RUN mkdir /app/
|
||||||
|
COPY . /app/
|
||||||
|
WORKDIR /app/
|
||||||
|
RUN flutter build web --no-sound-null-safety
|
||||||
|
#--no-sound-null-safety
|
||||||
|
# Stage 2 - Create the run-time image
|
||||||
|
FROM nginx:1.21.1-alpine
|
||||||
|
COPY --from=build-env /app/build/web /usr/share/nginx/html
|
||||||
50
lib/Components/loading_common.dart
Normal file
50
lib/Components/loading_common.dart
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:tablet_app/constants.dart';
|
||||||
|
|
||||||
|
class LoadingCommon extends StatefulWidget {
|
||||||
|
const LoadingCommon({Key? key}) : super(key: key);
|
||||||
|
|
||||||
|
@override
|
||||||
|
State<LoadingCommon> createState() => _LoadingCommonState();
|
||||||
|
}
|
||||||
|
|
||||||
|
class _LoadingCommonState extends State<LoadingCommon> with TickerProviderStateMixin {
|
||||||
|
AnimationController? _controller;
|
||||||
|
|
||||||
|
@override
|
||||||
|
void initState() {
|
||||||
|
_controller = AnimationController(
|
||||||
|
duration: const Duration(milliseconds: 5000),
|
||||||
|
vsync: this,
|
||||||
|
)..repeat();
|
||||||
|
super.initState();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
void dispose() {
|
||||||
|
_controller!.dispose();
|
||||||
|
super.dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
@override
|
||||||
|
Widget build(BuildContext context) {
|
||||||
|
Size size = MediaQuery.of(context).size;
|
||||||
|
_controller!.forward(from: 0.0);
|
||||||
|
_controller!.addListener(() {
|
||||||
|
if (_controller!.isCompleted) {
|
||||||
|
_controller!.reverse();
|
||||||
|
}
|
||||||
|
if(_controller!.isDismissed){
|
||||||
|
_controller!.forward();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return Center(
|
||||||
|
child: RotationTransition(
|
||||||
|
turns: Tween(begin: 0.0, end: 3.0).animate(_controller!),
|
||||||
|
child: Icon(Icons.museum_outlined, color: kTestSecondColor, size: size.height*0.1),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -10,6 +10,7 @@ import 'package:mqtt_client/mqtt_server_client.dart';
|
|||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tablet_app/Components/Buttons/rounded_button.dart';
|
import 'package:tablet_app/Components/Buttons/rounded_button.dart';
|
||||||
import 'package:tablet_app/Components/loading.dart';
|
import 'package:tablet_app/Components/loading.dart';
|
||||||
|
import 'package:tablet_app/Components/loading_common.dart';
|
||||||
import 'package:tablet_app/Components/rounded_input_field.dart';
|
import 'package:tablet_app/Components/rounded_input_field.dart';
|
||||||
import 'package:tablet_app/Helpers/DatabaseHelper.dart';
|
import 'package:tablet_app/Helpers/DatabaseHelper.dart';
|
||||||
import 'package:tablet_app/Helpers/DeviceInfoHelper.dart';
|
import 'package:tablet_app/Helpers/DeviceInfoHelper.dart';
|
||||||
@ -136,7 +137,7 @@ class _ConfigViewWidget extends State<ConfigViewWidget> {
|
|||||||
return Center(
|
return Center(
|
||||||
child: Container(
|
child: Container(
|
||||||
height: size.height * 0.2,
|
height: size.height * 0.2,
|
||||||
child: Loading()
|
child: kIsWeb ? LoadingCommon() : Loading()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,6 +5,7 @@ import 'package:flutter/services.dart';
|
|||||||
import 'package:manager_api/api.dart';
|
import 'package:manager_api/api.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tablet_app/Components/loading.dart';
|
import 'package:tablet_app/Components/loading.dart';
|
||||||
|
import 'package:tablet_app/Components/loading_common.dart';
|
||||||
import 'package:tablet_app/Helpers/MQTTHelper.dart';
|
import 'package:tablet_app/Helpers/MQTTHelper.dart';
|
||||||
import 'package:tablet_app/Screens/Configuration/config_view.dart';
|
import 'package:tablet_app/Screens/Configuration/config_view.dart';
|
||||||
import 'package:tablet_app/Screens/Map/map_context.dart';
|
import 'package:tablet_app/Screens/Map/map_context.dart';
|
||||||
@ -228,7 +229,7 @@ class _MainViewWidget extends State<MainViewWidget> {
|
|||||||
child: Align(
|
child: Align(
|
||||||
alignment: Alignment.bottomRight,
|
alignment: Alignment.bottomRight,
|
||||||
child: FractionallySizedBox(
|
child: FractionallySizedBox(
|
||||||
heightFactor: 0.4,
|
heightFactor: 0.25,
|
||||||
child: Column(
|
child: Column(
|
||||||
children: [
|
children: [
|
||||||
Align(
|
Align(
|
||||||
@ -262,7 +263,7 @@ class _MainViewWidget extends State<MainViewWidget> {
|
|||||||
} else {
|
} else {
|
||||||
return Center(
|
return Center(
|
||||||
child: Container(
|
child: Container(
|
||||||
child: Loading()
|
child: kIsWeb ? LoadingCommon() : Loading()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -305,7 +306,7 @@ boxDecoration(SectionDTO section, bool isSelected) {
|
|||||||
borderRadius: BorderRadius.circular(30.0),
|
borderRadius: BorderRadius.circular(30.0),
|
||||||
image: section.imageSource != null ? new DecorationImage(
|
image: section.imageSource != null ? new DecorationImage(
|
||||||
fit: !isSelected || kIsWeb ? BoxFit.cover : BoxFit.contain,
|
fit: !isSelected || kIsWeb ? BoxFit.cover : BoxFit.contain,
|
||||||
colorFilter: !isSelected? new ColorFilter.mode(Colors.black.withOpacity(0.5), BlendMode.dstATop) : null,
|
colorFilter: !isSelected? new ColorFilter.mode(Colors.black.withOpacity(0.3), BlendMode.dstATop) : null,
|
||||||
image: new NetworkImage(
|
image: new NetworkImage(
|
||||||
section.imageSource!,
|
section.imageSource!,
|
||||||
),
|
),
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import 'package:google_maps_flutter/google_maps_flutter.dart';
|
|||||||
import 'package:manager_api/api.dart';
|
import 'package:manager_api/api.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:tablet_app/Components/loading.dart';
|
import 'package:tablet_app/Components/loading.dart';
|
||||||
|
import 'package:tablet_app/Components/loading_common.dart';
|
||||||
import 'package:tablet_app/Models/map-marker.dart';
|
import 'package:tablet_app/Models/map-marker.dart';
|
||||||
import 'dart:ui' as ui;
|
import 'dart:ui' as ui;
|
||||||
import 'package:flutter/widgets.dart';
|
import 'package:flutter/widgets.dart';
|
||||||
@ -81,7 +82,7 @@ class _MapViewWidget extends State<MapViewWidget> {
|
|||||||
} else {
|
} else {
|
||||||
return Center(
|
return Center(
|
||||||
child: Container(
|
child: Container(
|
||||||
child: Loading()
|
child: kIsWeb ? LoadingCommon() : Loading()
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
393
pubspec.lock
393
pubspec.lock
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user