Нужна помощь по реализации NavigationDelagate в webview_cefLinux

Ответить
Anonymous
 Нужна помощь по реализации NavigationDelagate в webview_cef

Сообщение Anonymous »

Я начал реализовывать функцию NavigationDelegate в пакете webview_cef. Мне нужно написать некоторый код, который блокирует все URL-адреса, поэтому мне нужна помощь, чтобы сделать это и правильно управлять кодом.
Вот код пакета, который я сделал
https://drive.google.com/file/d/1pFwxTE ... sp=sharing
Я пытаюсь реализовать класс обратного вызова NavigationDelegate и канал метода для взаимодействия с нативным кодом, но не обладаю глубокими знаниями об этом
В моем коде, когда я использую этот код он блокирует все URL-адреса, на которые пользователь может щелкнуть и перенаправить, но я хочу реализовать его как обратный вызов, когда решение dart для конкретного URL-адреса равно предотвратить, URL-адрес должен быть запрещен, а также, если решение navigate< /strong> URL-адрес должен быть перемещаемым
Но использование этого кода, какое бы решение я ни принял, блокирует все URL-адреса, короче говоря, мне нужно управлять этим кодом, чтобы он работал как положено.

Я сделал такие изменения, как указано, и ничего не загружалось, все будет перехвачено, поэтому, пожалуйста, помогите мне правильно управлять кодом.
Если кто-нибудь знает об этом, пожалуйста, помогите мне.
Вот что я для этого сделал:
webview_handler.cc:

bool WebviewHandler::OnBeforeBrowse(CefRefPtr browser,
CefRefPtr frame,
CefRefPtr request,
bool user_gesture,
bool is_redirect) {
CEF_REQUIRE_UI_THREAD();
std::string url = request->GetURL();
// bool shouldAllowNavigation = true;
if (onNavigationRequestEvent) {
std::cout onJavaScriptChannelMessage = nullptr;
m_handler->onFocusedNodeChangeMessage = nullptr;
m_handler->onImeCompositionRangeChangedMessage = nullptr;
m_init = false;
}
void WebviewPlugin::HandleMethodCall(std::string name, WValue* values, std::function result) {
if (name.compare("setNavigationDelegate") == 0) {
int browserId = int(webview_value_get_int(webview_value_get_list_value(values, 0)));
const auto url = webview_value_get_string(webview_value_get_list_value(values, 1));
m_handler->onNavigationRequestEvent(browserId,url);
// setNavigationRequestCallback();
result(1, nullptr); // Respond to Dart
}
// else if (name.compare("setNavigationDelegate") == 0) {
// // Set up navigation delegate
// m_handler->onNavigationRequestEvent = [=](int browserId, std::string url) {
// std::cout

Подробнее здесь: https://stackoverflow.com/questions/789 ... ebview-cef
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»