iOS Flutter webview cookie 会话在导航太快时丢失

问题描述 投票:0回答:2

iOS 中似乎存在一个 Android 中没有出现的错误,即当从一个 Web 视图导航到另一个 Web 视图太快时,共享多个 Web 视图会话数据似乎会丢失。我有 3 个选项卡,每个选项卡都是 flutter webviews,在 android 上,当我登录到其中一个 webviews 时,我可以在 webviews 之间快速导航,而不会丢失会话 cookie。在 iOS 上,只有当我从一个会话导航到另一个会话太快时,会话才会丢失,否则当缓慢导航时就不会出现问题。

import 'package:webview_flutter/webview_flutter.dart';


class LatestView extends StatelessWidget {
  final ConnectivityResult connectivityResult;
  LatestView({this.connectivityResult}) {
    print(connectivityResult);
  }
  final Set<Factory> gestureRecognizer = [Factory(() => EagerGestureRecognizer(),)].toSet();
  final HelperService _helperService = locator<HelperService>();

  _startsLoading(String str) {
    print(str);
  }

  final Completer<WebViewController> _latestWebViewController =
      new Completer<WebViewController>();


  bool isLoading = true;


  @override
  Widget build(BuildContext context) {
    return Container(
      child: (connectivityResult == ConnectivityResult.none)
          ? Align(
              alignment: Alignment.topCenter,
              child: Image(
                fit: BoxFit.contain,
                image: AssetImage('assets/ic_no_internet.png'),
              ),
            )
          : WebView(
        onPageStarted: _startsLoading('Loading'),
              key: _helperService.gimmeLatestKey,
              initialUrl: 'https://mywebsite.com',
              javascriptMode: JavascriptMode.unrestricted,
        gestureRecognizers: <Factory<OneSequenceGestureRecognizer>>[
          new Factory<OneSequenceGestureRecognizer>(
                () => new EagerGestureRecognizer(),
          ),
        ].toSet(),
        onPageFinished: _startsLoading('Finished'),
            ),
    );



  }
}
android ios flutter webview
2个回答
0
投票

webview_flutter 自此有了改进。我建议根据您的用例再次尝试。该插件现在支持通过 CookieManager 设置和恢复 cookie。更多详细信息将在这个thread上讨论。


0
投票

只需为 cookie 设置一个到期日期,它就会被保存。

© www.soinside.com 2019 - 2024. All rights reserved.