11part of 'package:parse_server_sdk_flutter/parse_server_sdk_flutter.dart' ;
22
3+
4+
35/// The type of function that builds a child widget for a ParseLiveList element.
46typedef ChildBuilder <T extends sdk.ParseObject > = Widget Function (
57 BuildContext context, sdk.ParseLiveListElementSnapshot <T > snapshot, [int ? index]);
@@ -136,14 +138,22 @@ class _ParseLiveListWidgetState<T extends sdk.ParseObject>
136138 }
137139
138140 Future <void > _checkConnectivityAndLoad () async {
141+ final connectivityResult = await Connectivity ().checkConnectivity ();
142+ _isOffline = connectivityResult == ConnectivityResult .none;
143+ if (_isOffline) {
139144 if (widget.offlineMode) {
140- _isOffline = true ;
141145 await _loadFromCache ();
142146 } else {
143- _isOffline = false ;
144- await _loadData ();
147+ // Show a message or empty state, since offlineMode is not enabled
148+ setState (() {
149+ _items.clear ();
150+ _noDataNotifier.value = true ;
151+ });
145152 }
153+ } else {
154+ await _loadData ();
146155 }
156+ }
147157
148158 Future <void > _loadFromCache () async {
149159 _items.clear ();
@@ -193,8 +203,10 @@ class _ParseLiveListWidgetState<T extends sdk.ParseObject>
193203 final item = liveList.getPreLoadedAt (i);
194204 if (item != null ) {
195205 _items.add (item);
196- // Save to offline cache as user browses
197- item.saveToLocalCache ();
206+ // Only save to offline cache if offlineMode is enabled
207+ if (widget.offlineMode) {
208+ item.saveToLocalCache ();
209+ }
198210 }
199211 }
200212 }
@@ -205,17 +217,23 @@ class _ParseLiveListWidgetState<T extends sdk.ParseObject>
205217 if (event is sdk.ParseLiveListAddEvent <sdk.ParseObject >) {
206218 setState (() {
207219 _items.insert (event.index, event.object as T );
208- (event.object as T ).saveToLocalCache ();
220+ if (widget.offlineMode) {
221+ (event.object as T ).saveToLocalCache ();
222+ }
209223 });
210224 } else if (event is sdk.ParseLiveListDeleteEvent <sdk.ParseObject >) {
211225 setState (() {
212226 _items.removeAt (event.index);
213- (event.object as T ).removeFromLocalCache ();
227+ if (widget.offlineMode) {
228+ (event.object as T ).removeFromLocalCache ();
229+ }
214230 });
215231 } else if (event is sdk.ParseLiveListUpdateEvent <sdk.ParseObject >) {
216232 setState (() {
217233 _items[event.index] = event.object as T ;
218- (event.object as T ).saveToLocalCache ();
234+ if (widget.offlineMode) {
235+ (event.object as T ).saveToLocalCache ();
236+ }
219237 });
220238 }
221239 _noDataNotifier.value = _items.isEmpty;
0 commit comments