Files
ente/lib/ui/common/web_page.dart
Prateek Sunal 5279a134e0 [FEAT] Auth Desktop (#416)
<!--
  Thanks for contributing!

Provide a description of your changes below and a general summary in the
title

Please look at the following checklist to ensure that your PR can be
accepted quickly:
-->

## Description

This is a PR that makes the auth build runnable on the Desktop platform.
Below is a screenshot for the same:
![Screenshot 2024-01-10 at 10 35
14 PM](https://github.com/ente-io/auth/assets/41370460/9efe00f9-9a49-48f9-a822-d578ddbe82bf)

Some things to note:
- LocalAuth will be bypassed on unsupported platforms (desktop)
- Switched to sodium and sodium-libs from flutter_sodium.
- QR code library is incompatible with desktop, So I removed access to
those pages.
- Bumped some dependencies and done some lint fixes
- Also add save key option as send file may not help on desktop (related
#380)


https://github.com/ente-io/auth/assets/41370460/3f3471e8-45f6-4146-88ac-b763d4f38b32

- Update Recovery Key Card UI
![Screenshot 2024-01-19 at 12 31
31 AM](https://github.com/ente-io/auth/assets/41370460/19db35cd-f151-4587-a74b-6c53bca0f23f)

So this is a step towards more updated code and better multiplatform
support.

## Type of Change

<!--- Put an `x` in all the boxes that apply: -->

- [ ] 🖼️ New icon
- [x]  New feature (non-breaking change which adds functionality)
- [ ] 🛠️ Bug fix (non-breaking change which fixes an issue)
- [ ]  Breaking change (fix or feature that would cause existing
functionality to change)
- [x] 🧹 Code refactor
- [ ]  Build configuration change
- [ ] 📝 Documentation
- [ ] 🗑️ Chore

---------

Co-authored-by: Neeraj Gupta <254676+ua741@users.noreply.github.com>
2024-02-12 21:06:41 +05:30

44 lines
1.2 KiB
Dart

import 'package:ente_auth/ui/common/loading_widget.dart';
import 'package:flutter/material.dart';
import 'package:flutter_inappwebview/flutter_inappwebview.dart';
class WebPage extends StatefulWidget {
final String title;
final String url;
const WebPage(this.title, this.url, {super.key});
@override
State<WebPage> createState() => _WebPageState();
}
class _WebPageState extends State<WebPage> {
bool _hasLoadedPage = false;
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
// force dark theme for appBar till website/family plans add supports for light theme
backgroundColor: const Color.fromRGBO(10, 20, 20, 1.0),
foregroundColor: Colors.white,
iconTheme: const IconThemeData(color: Colors.white),
title: Text(widget.title),
actions: [_hasLoadedPage ? Container() : const EnteLoadingWidget()],
),
backgroundColor: Colors.black,
body: InAppWebView(
initialUrlRequest: URLRequest(url: WebUri(widget.url)),
initialSettings: InAppWebViewSettings(
transparentBackground: true,
),
onLoadStop: (c, url) {
setState(() {
_hasLoadedPage = true;
});
},
),
);
}
}