@@ -5,14 +5,17 @@ import 'package:devour/application/feed/bloc/feed_bloc.dart';
5
5
import 'package:devour/domain/meme/abstract_meme_model.dart' ;
6
6
import 'package:devour/domain/misc/helper.dart' ;
7
7
import 'package:devour/injection.dart' ;
8
+ import 'package:devour/presentation/screens/feed/feed_image_widget.dart' ;
8
9
import 'package:devour/presentation/widgets/platform/platform_icon_button.dart' ;
9
10
import 'package:flutter/cupertino.dart' ;
10
11
import 'package:flutter/material.dart' ;
11
12
import 'package:flutter/widgets.dart' ;
12
13
import 'package:flutter_cache_manager/flutter_cache_manager.dart' ;
13
- import 'package:octo_image/octo_image.dart' ;
14
14
15
- class PostWidget extends StatelessWidget {
15
+ /// Widget to show post information like description and likes and image,
16
+ /// to create illusion of selecting meme from list.
17
+ class PostWidget extends StatefulWidget {
18
+ /// Constructs PostWidget
16
19
const PostWidget (
17
20
this .state, {
18
21
required this .constraints,
@@ -22,13 +25,19 @@ class PostWidget extends StatelessWidget {
22
25
final FeedState state;
23
26
final BoxConstraints constraints;
24
27
28
+ @override
29
+ State <PostWidget > createState () => _PostWidgetState ();
30
+ }
31
+
32
+ class _PostWidgetState extends State <PostWidget > {
25
33
@override
26
34
Widget build (BuildContext context) {
27
- if (state.isLoading) {
35
+ if (widget. state.isLoading) {
28
36
return Container ();
29
37
}
30
38
31
- final key = state.currentMemeWidget.toNullable ();
39
+ final key = widget.state.currentMemeWidget.toNullable ();
40
+ // key.currentWidget
32
41
final box = key? .currentContext? .findRenderObject () as RenderBox ? ;
33
42
final pos = box? .localToGlobal (Offset .zero) ?? Offset .zero;
34
43
@@ -41,41 +50,35 @@ class PostWidget extends StatelessWidget {
41
50
height: box? .size.height,
42
51
child: IgnorePointer (
43
52
child: AnimatedSwitcher (
44
- duration: const Duration (milliseconds: 100 ),
45
- layoutBuilder: (curr, prev) {
46
- return Stack (
47
- alignment: Alignment .center,
48
- children: < Widget > [
49
- // ...prev,
50
- if (curr != null ) curr,
51
- ],
52
- );
53
- },
54
- child: ConstrainedBox (
55
- key: Key (state.currentMemeModel.imageLink),
56
- constraints: BoxConstraints (
57
- minWidth: constraints.maxWidth,
58
- ),
59
- child: OctoImage (
60
- image: CachedNetworkImageProvider (
61
- state.currentMemeModel.imageLink,
62
- errorListener: () =>
63
- print ('error (${state .currentMemeModel .imageLink })' ),
53
+ duration: const Duration (milliseconds: 100 ),
54
+ layoutBuilder: (curr, prev) {
55
+ return Stack (
56
+ alignment: Alignment .center,
57
+ children: < Widget > [
58
+ // ...prev,
59
+ if (curr != null ) curr,
60
+ ],
61
+ );
62
+ },
63
+ child: FeedImage (
64
+ key: Key (widget.state.currentMemeModel.imageLink),
65
+ imageProvider: CachedNetworkImageProvider (
66
+ widget.state.currentMemeModel.imageLink,
67
+ errorListener: () => print (
68
+ 'error (${widget .state .currentMemeModel .imageLink })' ),
64
69
cacheManager: serviceLocator <CacheManager >(),
65
70
),
66
- fit: BoxFit .fitWidth,
67
- width: constraints.maxWidth,
71
+ constraints: widget.constraints,
68
72
),
69
73
),
70
- ),
71
74
),
72
75
),
73
76
Positioned .fill (
74
77
top: 100 ,
75
78
child: Row (
76
79
mainAxisAlignment: MainAxisAlignment .end,
77
80
children: [
78
- PostActionsWidget (currentPost: state.currentMemeModel),
81
+ PostActionsWidget (currentPost: widget. state.currentMemeModel),
79
82
],
80
83
),
81
84
),
@@ -84,7 +87,7 @@ class PostWidget extends StatelessWidget {
84
87
bottom: 100 ,
85
88
width: 400 ,
86
89
child: PostDescriptionWidget (
87
- currentPost: state.currentMemeModel,
90
+ currentPost: widget. state.currentMemeModel,
88
91
),
89
92
),
90
93
],
0 commit comments