Skip to content

Commit 901d199

Browse files
committed
Adding introduction sliders
1 parent 3aaa822 commit 901d199

File tree

8 files changed

+174
-45
lines changed

8 files changed

+174
-45
lines changed

assets/intro/intro_slider_1.png

74.9 KB
Loading

assets/intro/intro_slider_2.png

72.3 KB
Loading

assets/intro/intro_slider_3.png

6.65 KB
Loading

ios/Podfile.lock

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,15 @@ PODS:
77
- FMDB (2.7.5):
88
- FMDB/standard (= 2.7.5)
99
- FMDB/standard (2.7.5)
10+
- intro_slider (0.0.1):
11+
- Flutter
1012
- MobilePlayer (1.3.0)
1113
- path_provider (0.0.1):
1214
- Flutter
1315
- screen (0.0.1):
1416
- Flutter
17+
- shared_preferences (0.0.1):
18+
- Flutter
1519
- sqflite (0.0.1):
1620
- Flutter
1721
- FMDB (~> 2.7.2)
@@ -26,9 +30,11 @@ DEPENDENCIES:
2630
- device_info (from `.symlinks/plugins/device_info/ios`)
2731
- Flutter (from `.symlinks/flutter/ios`)
2832
- flutter_downloader (from `.symlinks/plugins/flutter_downloader/ios`)
33+
- intro_slider (from `.symlinks/plugins/intro_slider/ios`)
2934
- MobilePlayer (~> 1.3.0)
3035
- path_provider (from `.symlinks/plugins/path_provider/ios`)
3136
- screen (from `.symlinks/plugins/screen/ios`)
37+
- shared_preferences (from `.symlinks/plugins/shared_preferences/ios`)
3238
- sqflite (from `.symlinks/plugins/sqflite/ios`)
3339
- url_launcher (from `.symlinks/plugins/url_launcher/ios`)
3440
- video_player (from `.symlinks/plugins/video_player/ios`)
@@ -46,10 +52,14 @@ EXTERNAL SOURCES:
4652
:path: ".symlinks/flutter/ios"
4753
flutter_downloader:
4854
:path: ".symlinks/plugins/flutter_downloader/ios"
55+
intro_slider:
56+
:path: ".symlinks/plugins/intro_slider/ios"
4957
path_provider:
5058
:path: ".symlinks/plugins/path_provider/ios"
5159
screen:
5260
:path: ".symlinks/plugins/screen/ios"
61+
shared_preferences:
62+
:path: ".symlinks/plugins/shared_preferences/ios"
5363
sqflite:
5464
:path: ".symlinks/plugins/sqflite/ios"
5565
url_launcher:
@@ -64,9 +74,11 @@ SPEC CHECKSUMS:
6474
Flutter: 58dd7d1b27887414a370fcccb9e645c08ffd7a6a
6575
flutter_downloader: 058b9c41564a90500f67f3e432e3524613a7fd83
6676
FMDB: 2ce00b547f966261cd18927a3ddb07cb6f3db82a
77+
intro_slider: 85847639533bfd8e898d76844e0aa2cf412ee190
6778
MobilePlayer: e50e2160830f3db51d6e08067318aec6a9d39408
6879
path_provider: f96fff6166a8867510d2c25fdcc346327cc4b259
6980
screen: abd91ca7bf3426e1cc3646d27e9b2358d6bf07b0
81+
shared_preferences: 1feebfa37bb57264736e16865e7ffae7fc99b523
7082
sqflite: ff1d9da63c06588cc8d1faf7256d741f16989d5a
7183
url_launcher: 0067ddb8f10d36786672aa0722a21717dba3a298
7284
video_player: 3964090a33353060ed7f58aa6427c7b4b208ec21

lib/main.dart

Lines changed: 71 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,11 @@ import 'package:flutter_ws/widgets/bars/indexing_bar.dart';
2323
import 'package:flutter_ws/widgets/bars/status_bar.dart';
2424
import 'package:flutter_ws/widgets/filterMenu/filter_menu.dart';
2525
import 'package:flutter_ws/widgets/filterMenu/search_filter.dart';
26+
import 'package:flutter_ws/widgets/introSlider/intro_slider.dart';
2627
import 'package:flutter_ws/widgets/videolist/video_list_view.dart';
2728
import 'package:flutter_ws/widgets/videolist/videolist_util.dart';
2829
import 'package:logging/logging.dart';
30+
import 'package:shared_preferences/shared_preferences.dart';
2931
import 'package:uuid/uuid.dart';
3032

3133
void main() => runApp(new AppSharedStateContainer(child: new MyApp()));
@@ -49,6 +51,7 @@ class MyApp extends StatelessWidget {
4951
Uuid uuid = new Uuid();
5052

5153
return new MaterialApp(
54+
debugShowCheckedModeBanner: false,
5255
theme: new ThemeData(
5356
textTheme: new TextTheme(
5457
subhead: subHeaderTextStyle,
@@ -152,6 +155,10 @@ class HomePageState extends State<MyHomePage>
152155
DownloadSection downloadSection;
153156
AboutSection aboutSection;
154157

158+
//intro slider
159+
SharedPreferences prefs;
160+
bool isFirstStart = false;
161+
155162
HomePageState(this.searchFieldController, this.logger);
156163

157164
@override
@@ -212,57 +219,21 @@ class HomePageState extends State<MyHomePage>
212219
});
213220

214221
startSocketHealthTimer();
215-
}
216-
217-
void startSocketHealthTimer() {
218-
if (socketHealthTimer == null || !socketHealthTimer.isActive) {
219-
Duration duration = new Duration(milliseconds: 5000);
220-
Timer.periodic(
221-
duration,
222-
(Timer t) {
223-
ConnectionState connectionState = websocketController.connectionState;
224-
225-
if (connectionState == ConnectionState.active) {
226-
logger.fine("Ws connection is fine");
227-
consecutiveWebsocketUnhealthyChecks = 0;
228-
if (websocketInitError) {
229-
websocketInitError = false;
230-
if (mounted) setState(() {});
231-
}
232-
} else if (connectionState == ConnectionState.done ||
233-
connectionState == ConnectionState.none) {
234-
showStatusBar();
235-
236-
logger.fine("Ws connection is " +
237-
connectionState.toString() +
238-
" and mounted: " +
239-
mounted.toString());
240-
241-
if (mounted)
242-
websocketController
243-
.initializeWebsocket()
244-
.then((initializedSuccessfully) {
245-
if (initializedSuccessfully) {
246-
consecutiveWebsocketUnhealthyChecks = 0;
247-
logger.info("WS connection stable again");
248-
if (videos.isEmpty) {
249-
_createQuery();
250-
}
251-
} else {
252-
logger.info("WS initialization failed");
253-
}
254-
});
255-
}
256-
},
257-
);
258-
}
222+
checkForFirstStart();
259223
}
260224

261225
@override
262226
Widget build(BuildContext context) {
263227
stateContainer = AppSharedStateContainer.of(context);
264228

265-
logger.fine("Rendering Home Page");
229+
if (isFirstStart) {
230+
return new IntroScreen(onDonePressed: () {
231+
setState(() {
232+
isFirstStart = false;
233+
prefs.setBool('firstStart', false);
234+
});
235+
});
236+
}
266237

267238
return new Scaffold(
268239
backgroundColor: Colors.grey[800],
@@ -630,6 +601,61 @@ class HomePageState extends State<MyHomePage>
630601
}
631602
}
632603

604+
checkForFirstStart() async {
605+
prefs = await SharedPreferences.getInstance();
606+
var firstStart = prefs.getBool('firstStart');
607+
if (firstStart == null) {
608+
print("First start");
609+
setState(() {
610+
isFirstStart = true;
611+
});
612+
}
613+
}
614+
615+
void startSocketHealthTimer() {
616+
if (socketHealthTimer == null || !socketHealthTimer.isActive) {
617+
Duration duration = new Duration(milliseconds: 5000);
618+
Timer.periodic(
619+
duration,
620+
(Timer t) {
621+
ConnectionState connectionState = websocketController.connectionState;
622+
623+
if (connectionState == ConnectionState.active) {
624+
logger.fine("Ws connection is fine");
625+
consecutiveWebsocketUnhealthyChecks = 0;
626+
if (websocketInitError) {
627+
websocketInitError = false;
628+
if (mounted) setState(() {});
629+
}
630+
} else if (connectionState == ConnectionState.done ||
631+
connectionState == ConnectionState.none) {
632+
showStatusBar();
633+
634+
logger.fine("Ws connection is " +
635+
connectionState.toString() +
636+
" and mounted: " +
637+
mounted.toString());
638+
639+
if (mounted)
640+
websocketController
641+
.initializeWebsocket()
642+
.then((initializedSuccessfully) {
643+
if (initializedSuccessfully) {
644+
consecutiveWebsocketUnhealthyChecks = 0;
645+
logger.info("WS connection stable again");
646+
if (videos.isEmpty) {
647+
_createQuery();
648+
}
649+
} else {
650+
logger.info("WS initialization failed");
651+
}
652+
});
653+
}
654+
},
655+
);
656+
}
657+
}
658+
633659
mockIndexing() {
634660
if (mockTimer == null || !mockTimer.isActive) {
635661
var one = new Duration(seconds: 1);
Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:intro_slider/intro_slider.dart';
3+
import 'package:intro_slider/slide_object.dart';
4+
5+
class IntroScreen extends StatefulWidget {
6+
var onDonePressed;
7+
IntroScreen({Key key, this.onDonePressed}) : super(key: key);
8+
9+
@override
10+
IntroScreenState createState() => new IntroScreenState();
11+
}
12+
13+
class IntroScreenState extends State<IntroScreen> {
14+
List<Slide> slides = new List();
15+
16+
@override
17+
void initState() {
18+
super.initState();
19+
20+
slides.add(
21+
new Slide(
22+
title: "Suchen und Downloaden",
23+
maxLineTitle: 2,
24+
marginTitle: new EdgeInsets.only(top: 20.0, bottom: 20.0),
25+
description: "Durchsuchen von öffentlich-rechtlichen Mediatheken.",
26+
//pathImage: "assets/intro/intro_slider_1.png",
27+
centerWidget: new Container(
28+
padding: EdgeInsets.only(left: 20.0, right: 20.0),
29+
child: new Image(
30+
image: new AssetImage("assets/intro/intro_slider_1.png"))),
31+
backgroundColor: Color(0xfff5a623),
32+
),
33+
);
34+
slides.add(
35+
new Slide(
36+
title: "Filtern",
37+
description: "Filtern nach Thema, Titel, Länge und Fernsehsender",
38+
//pathImage: "assets/intro/intro_slider_2.png",
39+
centerWidget: new Container(
40+
padding: EdgeInsets.only(left: 20.0, right: 20.0),
41+
child: new Image(
42+
image: new AssetImage("assets/intro/intro_slider_2.png"))),
43+
44+
backgroundColor: Color(0xff203152),
45+
),
46+
);
47+
slides.add(
48+
new Slide(
49+
title: "Bewerten",
50+
description: "Bewerte deine Lieblingssendungen",
51+
//pathImage: "assets/intro/intro_slider_3.png",
52+
centerWidget: new Container(
53+
padding: EdgeInsets.only(left: 20.0, right: 20.0),
54+
child: new Image(
55+
image: new AssetImage("assets/intro/intro_slider_3.png"))),
56+
backgroundColor: Color(0xff9932CC),
57+
),
58+
);
59+
}
60+
61+
void onDonePress() {
62+
widget.onDonePressed();
63+
}
64+
65+
@override
66+
Widget build(BuildContext context) {
67+
return new IntroSlider(
68+
slides: this.slides,
69+
onDonePress: this.onDonePress,
70+
);
71+
}
72+
}

pubspec.lock

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,13 @@ packages:
165165
url: "https://pub.dartlang.org"
166166
source: hosted
167167
version: "2.1.4"
168+
intro_slider:
169+
dependency: "direct main"
170+
description:
171+
name: intro_slider
172+
url: "https://pub.dartlang.org"
173+
source: hosted
174+
version: "2.2.5"
168175
json_object_lite:
169176
dependency: "direct main"
170177
description:
@@ -256,6 +263,13 @@ packages:
256263
url: "https://pub.dartlang.org"
257264
source: hosted
258265
version: "0.0.5"
266+
shared_preferences:
267+
dependency: "direct main"
268+
description:
269+
name: shared_preferences
270+
url: "https://pub.dartlang.org"
271+
source: hosted
272+
version: "0.5.3+4"
259273
shimmer:
260274
dependency: "direct main"
261275
description:

pubspec.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ dependencies:
2525
chewie: '^0.9.7'
2626
wakelock: '^0.1.2+7'
2727
flutter_launcher_icons: "^0.7.0"
28+
shared_preferences: "^0.5.3+4"
29+
intro_slider: "^2.2.5"
2830

2931
flutter:
3032
sdk: flutter
@@ -69,6 +71,9 @@ flutter:
6971
- assets/img/srf.png
7072
- assets/img/MediathekViewLoading.png
7173
- assets/default_live_stream_channels.txt
74+
- assets/intro/intro_slider_1.png
75+
- assets/intro/intro_slider_2.png
76+
- assets/intro/intro_slider_3.png
7277

7378
fonts:
7479
- family: OldStandard

0 commit comments

Comments
 (0)