Files
linkding-ios/lib/screens/webview/provider/webview.provider.dart
2024-02-29 12:41:30 +01:00

55 lines
1.4 KiB
Dart

import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:webview_flutter/webview_flutter.dart';
import 'package:linkdy/screens/webview/model/webview.model.dart';
part 'webview.provider.g.dart';
@riverpod
class WebView extends _$WebView {
@override
WebViewModel build() {
return WebViewModel(
webViewController: WebViewController()
..setNavigationDelegate(
NavigationDelegate(
onProgress: (progress) {
state.loadProgress = progress;
ref.notifyListeners();
},
onUrlChange: (change) {
state.webViewController.canGoBack().then((value) {
state.canGoBack = value;
ref.notifyListeners();
});
state.webViewController.canGoForward().then((value) {
state.canGoForward = value;
ref.notifyListeners();
});
},
),
),
);
}
void setLoadProgress(int progress) {
state.loadProgress = progress;
ref.notifyListeners();
}
void setCanGoBack(bool value) {
state.canGoBack = value;
ref.notifyListeners();
}
void setCanGoForward(bool value) {
state.canGoForward = value;
ref.notifyListeners();
}
void loadNewUrl(String url) {
ref.invalidateSelf();
state.webViewController.loadRequest(Uri.parse(url));
}
}