flutter 在Shared_Preferences中保存InAppWebView Cookie F;说出

wfypjpf4  于 2022-12-05  发布在  Flutter
关注(0)|答案(1)|浏览(277)

我正在使用shared_preferences ^2.0.15。我面临着webview注销问题。每次用户重新启动应用程序,用户从webview注销。我试图保存cookie时,用户登录webview和生成cookie。所以我很麻烦保存在cookie在共享的首选项。

final cookies = <dynamic>[].obs;
  void saveCookies(dynamic value) async { 
    final store = await SharedPreferences.getInstance();
    store.clear();
    cookies.value = value;
    await store.setString('cookies', convert.jsonEncode(cookies.toJson())); // Fail to add
  }

  var cookieList = await _cookieManager.getCookies(url);
  saveCookies(cookieList);
bttbmeg0

bttbmeg01#

看起来您正在尝试在共享首选项中保存Cookie列表,但在与JSON的相互转换中遇到了问题。在您提供的代码中,您调用了toJson(),但是这个方法在ObservableList类上不可用。然后使用dart:convert库中的jsonEncode函数将结果列表编码为JSON字符串。
以下是如何在“共享首选项”中保存Cookie的示例:

import 'package:flutter/services.dart' show rootBundle;
import 'package:flutter/widgets.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'package:webview_flutter/webview_flutter.dart';

final cookies = <dynamic>[].obs;

void saveCookies(dynamic value) async {
  final store = await SharedPreferences.getInstance();
  store.clear();
  cookies.value = value;
  await store.setString('cookies', jsonEncode(cookies.toList()));
}

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  // Initialize the webview and load a page
  final webView = WebView(
    initialUrl: 'https://www.example.com',
    javascriptMode: JavascriptMode.unrestricted,
  );

  // Save the cookies when the webview finishes loading
  webView.onPageFinished.listen((url) async {
    final cookieManager = CookieManager();
    final cookieList = await cookieManager.getCookies(url);
    saveCookies(cookieList);
  });

  runApp(webView);
}

我希望这对你有帮助!如果你有任何其他问题,请告诉我。

相关问题