diff --git a/flutter/shell/platform/tizen/flutter_tizen_view.cc b/flutter/shell/platform/tizen/flutter_tizen_view.cc index 525386b..11028e3 100644 --- a/flutter/shell/platform/tizen/flutter_tizen_view.cc +++ b/flutter/shell/platform/tizen/flutter_tizen_view.cc @@ -336,10 +336,21 @@ void FlutterTizenView::OnKey(const char* key, } if (engine_->keyboard_channel()) { + bool& backkey_handled = backkey_handled_; engine_->keyboard_channel()->SendKey( key, string, compose, modifiers, scan_code, is_down, - [engine = engine_.get(), symbol = std::string(key), - is_down](bool handled) { + [engine = engine_.get(), symbol = std::string(key), is_down, + &backkey_handled](bool handled) { + // If System's back key is handled in key-down, it should be + // handled so that "popRoute" is not called in key-up. + if (symbol == kBackKey) { + if (is_down) { + backkey_handled = handled; + } else { + handled |= backkey_handled; + backkey_handled = false; + } + } if (handled) { return; } diff --git a/flutter/shell/platform/tizen/flutter_tizen_view.h b/flutter/shell/platform/tizen/flutter_tizen_view.h index a965cb0..de4f07b 100644 --- a/flutter/shell/platform/tizen/flutter_tizen_view.h +++ b/flutter/shell/platform/tizen/flutter_tizen_view.h @@ -213,6 +213,9 @@ class FlutterTizenView : public TizenViewEventHandlerDelegate { 0.0, 0.0, 0.0, 1.0}; // The user-defined pixel ratio. double user_pixel_ratio_ = 0; + + // Whether the back key of the system has been handled. + bool backkey_handled_ = false; }; } // namespace flutter