android
assets
ios
lib
database
models
pods
screens
account
auth
captcha.dart
captcha.native.dart
captcha.web.dart
create_account.dart
login.dart
tabs.dart
chat
creators
posts
realm
account.dart
explore.dart
explore.g.dart
notification.dart
notification.g.dart
settings.dart
wallet.dart
wallet.g.dart
services
widgets
firebase_options.dart
main.dart
route.dart
route.gr.dart
linux
macos
web
windows
.gitignore
.metadata
README.md
analysis_options.yaml
build.yaml
devtools_options.yaml
firebase.json
pubspec.lock
pubspec.yaml
32 lines
1.1 KiB
Dart
32 lines
1.1 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
|
|
import 'package:flutter_riverpod/flutter_riverpod.dart';
|
|
import 'package:island/pods/config.dart';
|
|
import 'package:island/widgets/app_scaffold.dart';
|
|
|
|
class CaptchaScreen extends ConsumerWidget {
|
|
const CaptchaScreen({super.key});
|
|
|
|
@override
|
|
Widget build(BuildContext context, WidgetRef ref) {
|
|
final serverUrl = ref.watch(serverUrlProvider);
|
|
|
|
return AppScaffold(
|
|
appBar: AppBar(title: Text("Anti-Robot")),
|
|
body: InAppWebView(
|
|
initialUrlRequest: URLRequest(
|
|
url: WebUri('$serverUrl/auth/captcha?redirect_uri=solink://captcha'),
|
|
),
|
|
shouldOverrideUrlLoading: (controller, navigationAction) async {
|
|
Uri? url = navigationAction.request.url;
|
|
if (url != null && url.queryParameters.containsKey('captcha_tk')) {
|
|
Navigator.pop(context, url.queryParameters['captcha_tk']!);
|
|
return NavigationActionPolicy.CANCEL;
|
|
}
|
|
return NavigationActionPolicy.ALLOW;
|
|
},
|
|
),
|
|
);
|
|
}
|
|
}
|