Skip to content

Commit d4552e2

Browse files
committed
[#54] Add homeshimmerloading to homescreen
1 parent af347da commit d4552e2

File tree

3 files changed

+51
-15
lines changed

3 files changed

+51
-15
lines changed

lib/main.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class App extends StatelessWidget {
3232
GoRoute(
3333
path: routePathLoginScreen,
3434
pageBuilder: (_, __) => const NoTransitionPage<void>(
35-
child: HomeShimmerLoading(),
35+
child: LoginScreen(),
3636
),
3737
),
3838
GoRoute(

lib/screens/home/home_screen.dart

Lines changed: 49 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,61 @@ import 'package:flutter/material.dart';
22
import 'package:survey_flutter/screens/home/home_header_widget.dart';
33
import 'package:survey_flutter/screens/home/home_pages_widget.dart';
44
import 'package:survey_flutter/screens/home/home_page_indicator_widget.dart';
5+
import 'package:survey_flutter/screens/home/home_shimmer_loading.dart';
56

6-
const routePathHomeScreen = '/home';
7-
8-
class HomeScreen extends StatelessWidget {
7+
class HomeScreen extends StatefulWidget {
98
const HomeScreen({Key? key}) : super(key: key);
109

10+
@override
11+
HomeScreenState createState() => HomeScreenState();
12+
}
13+
14+
class HomeScreenState extends State<HomeScreen> {
15+
bool _isLoading = true;
16+
17+
@override
18+
void initState() {
19+
super.initState();
20+
_openHomeWithShimmerLoading();
21+
}
22+
23+
Future<void> _openHomeWithShimmerLoading() async {
24+
await Future.delayed(const Duration(seconds: 1));
25+
setState(() {
26+
_isLoading = false;
27+
});
28+
}
29+
1130
@override
1231
Widget build(BuildContext context) {
13-
return Stack(
14-
children: [
15-
HomePagesWidget(),
16-
const HomeHeaderWidget(),
17-
const Align(
18-
alignment: Alignment.bottomCenter,
19-
child: Padding(
20-
padding: EdgeInsets.only(bottom: 220),
21-
child: HomePageIndicatorWidget(),
32+
return Scaffold(
33+
body: Stack(
34+
children: [
35+
HomePagesWidget(),
36+
const HomeHeaderWidget(),
37+
const Align(
38+
alignment: Alignment.bottomCenter,
39+
child: Padding(
40+
padding: EdgeInsets.only(bottom: 220),
41+
child: HomePageIndicatorWidget(),
42+
),
2243
),
23-
),
24-
],
44+
// TODO: Handle only show shimmer loading after user login
45+
if (_isLoading) _buildShimmerLoading(),
46+
],
47+
),
48+
);
49+
}
50+
51+
Widget _buildShimmerLoading() {
52+
return AnimatedOpacity(
53+
opacity: 1.0,
54+
duration: const Duration(seconds: 1),
55+
curve: Curves.easeInOut,
56+
child: Container(
57+
color: Colors.black,
58+
child: const HomeShimmerLoading(),
59+
),
2560
);
2661
}
2762
}

lib/theme/app_constants.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ class Metrics {
44
static const formFieldHeight = 56.0;
55

66
static const spacing4 = 4.0;
7+
static const spacing10 = 10.0;
78
static const spacing16 = 16.0;
89
static const spacing20 = 20.0;
910
static const spacing28 = 28.0;

0 commit comments

Comments
 (0)