首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检索令牌的登录页

检索令牌的登录页
EN

Stack Overflow用户
提问于 2019-04-16 21:29:18
回答 1查看 588关注 0票数 0

因此,主页只是一个按钮,它路由到一个名为"LoginScreen()“的类,然后显示网页。这就是您在代码中看到的。作为一个整体,我对flutter和编程相当陌生,所以请解释一下,好像我不知道我在做什么。

另一个注意事项是,我不确定将身份验证和令牌检索的逻辑应用于何处。即在where视图所在的主页或登录页面中

代码语言:javascript
运行
复制
import 'dart:async';
import 'package:flutter_appauth/flutter_appauth.dart';
import 'package:flutter/material.dart';
import 'package:flutter_webview_plugin/flutter_webview_plugin.dart';
import 'package:flutter/services.dart';

class LoginScreen extends StatefulWidget {
  @override
  _LoginScreenState createState() => _LoginScreenState();
}

class _LoginScreenState extends State<LoginScreen> {

  final flutterWebviewPlugin = new FlutterWebviewPlugin();

  StreamSubscription _onDestroy;
  StreamSubscription<String> _onUrlChanged;
  StreamSubscription<WebViewStateChanged> _onStateChanged;

  String token;

  @override
  void dispose() {
    // Every listener should be canceled, the same should be done with this stream.
    _onDestroy.cancel();
    _onUrlChanged.cancel();
    _onStateChanged.cancel();
    flutterWebviewPlugin.dispose();
    super.dispose();
  }

  @override
  void initState() {
    super.initState();

    //flutterWebviewPlugin.close();

    // Add a listener to on destroy WebView, so you can make came actions.
    _onDestroy = flutterWebviewPlugin.onDestroy.listen((_) {
      print("destroy");
    });

    _onStateChanged =
        flutterWebviewPlugin.onStateChanged.listen((WebViewStateChanged state) {
          print("onStateChanged: ${state.type} ${state.url}");
        });

    // Add a listener to on url changed
    _onUrlChanged = flutterWebviewPlugin.onUrlChanged.listen((String url) {
      if (mounted) {
        setState(() {
          print("URL changed: $url");
        //flutterWebviewPlugin.close();

        });
      }
    });
  }


  @override
  Widget build(BuildContext context) {
    String url = "http://login/page";
    return WebviewScaffold(
      appBar: AppBar(
        title: Text("Login"),
      ),
      url: url,
      withZoom: false,

    );
  }
}

webview可以工作,但我不知道如何实现逻辑

EN

回答 1

Stack Overflow用户

发布于 2019-04-16 23:15:35

你做这件事的方式完全错误。Flutter旨在提供一种更容易构建的本机体验。您正在使用一种比本地编程更高级的技术,并使其依赖于一种较少的技术,即在本地应用程序中包装webviews。我会提出以下建议。如果你能实现它们的话。

  • 公开您的登录应用程序接口,以便您可以在Flutter上从移动应用程序directly.
  • Build您自己的登录屏幕访问它,并且不使用Flutter包装网站。
  • 公开您的API后,将您的令牌作为普通json对象返回,并根据需要在应用程序中使用它。

如果你不能改变api并且真的想包装你的应用程序(我不推荐这样做),那么就不要使用Flutter。Flutter's webview非常有限(它仍在开发人员预览中,因为它依赖于将原生视图添加到元素树中,这是一个即将推出的功能)。使用一种迎合网站包装并提供内置支持的技术。如果你是编程新手,这将会让你非常困惑,所以使用一些迎合你想要做的事情。

我推荐使用以下技术:

  • Cordova (它已经过时了,非常受欢迎,尽管它完全是基于网络的,但在原生混血儿中仍在增长。

我知道这可能不是你想要的答案,但根据你的问题,你要解决这个问题会困难得多。请尝试遵循我列出的第一点,您的开发体验将会更好,您的解决方案也将在简单性方面受益。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55709389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档