Update Windows app template (#65511)

diff --git a/packages/flutter_tools/templates/app/windows.tmpl/flutter/.template_version b/packages/flutter_tools/templates/app/windows.tmpl/flutter/.template_version
index 1e8b314..7f8f011 100644
--- a/packages/flutter_tools/templates/app/windows.tmpl/flutter/.template_version
+++ b/packages/flutter_tools/templates/app/windows.tmpl/flutter/.template_version
@@ -1 +1 @@
-6
+7
diff --git a/packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.cpp b/packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.cpp
index 6c7fa3d..aa0deaf 100644
--- a/packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.cpp
+++ b/packages/flutter_tools/templates/app/windows.tmpl/runner/flutter_window.cpp
@@ -17,22 +17,23 @@
 
   RECT frame = GetClientArea();
 
-  // The size here must match the window dimensions to avoid unnecessary surface creation / destruction in the startup path.
-  flutter_controller_ =
-      std::make_unique<flutter::FlutterViewController>(frame.right - frame.left, frame.bottom - frame.top, project_);
+  // The size here must match the window dimensions to avoid unnecessary surface
+  // creation / destruction in the startup path.
+  flutter_controller_ = std::make_unique<flutter::FlutterViewController>(
+      frame.right - frame.left, frame.bottom - frame.top, project_);
   // Ensure that basic setup of the controller was successful.
   if (!flutter_controller_->engine() || !flutter_controller_->view()) {
     return false;
   }
-  RegisterPlugins(flutter_controller_.get());
-  run_loop_->RegisterFlutterInstance(flutter_controller_.get());
+  RegisterPlugins(flutter_controller_->engine());
+  run_loop_->RegisterFlutterInstance(flutter_controller_->engine());
   SetChildContent(flutter_controller_->view()->GetNativeWindow());
   return true;
 }
 
 void FlutterWindow::OnDestroy() {
   if (flutter_controller_) {
-    run_loop_->UnregisterFlutterInstance(flutter_controller_.get());
+    run_loop_->UnregisterFlutterInstance(flutter_controller_->engine());
     flutter_controller_ = nullptr;
   }
 
diff --git a/packages/flutter_tools/templates/app/windows.tmpl/runner/run_loop.cpp b/packages/flutter_tools/templates/app/windows.tmpl/runner/run_loop.cpp
index f91d6d4..36849fd 100644
--- a/packages/flutter_tools/templates/app/windows.tmpl/runner/run_loop.cpp
+++ b/packages/flutter_tools/templates/app/windows.tmpl/runner/run_loop.cpp
@@ -47,20 +47,19 @@
 }
 
 void RunLoop::RegisterFlutterInstance(
-    flutter::FlutterViewController* flutter_instance) {
+    flutter::FlutterEngine* flutter_instance) {
   flutter_instances_.insert(flutter_instance);
 }
 
 void RunLoop::UnregisterFlutterInstance(
-    flutter::FlutterViewController* flutter_instance) {
+    flutter::FlutterEngine* flutter_instance) {
   flutter_instances_.erase(flutter_instance);
 }
 
 RunLoop::TimePoint RunLoop::ProcessFlutterMessages() {
   TimePoint next_event_time = TimePoint::max();
-  for (auto flutter_controller : flutter_instances_) {
-    std::chrono::nanoseconds wait_duration =
-        flutter_controller->ProcessMessages();
+  for (auto instance : flutter_instances_) {
+    std::chrono::nanoseconds wait_duration = instance->ProcessMessages();
     if (wait_duration != std::chrono::nanoseconds::max()) {
       next_event_time =
           std::min(next_event_time, TimePoint::clock::now() + wait_duration);
diff --git a/packages/flutter_tools/templates/app/windows.tmpl/runner/run_loop.h b/packages/flutter_tools/templates/app/windows.tmpl/runner/run_loop.h
index 442a58e..46ffc7a 100644
--- a/packages/flutter_tools/templates/app/windows.tmpl/runner/run_loop.h
+++ b/packages/flutter_tools/templates/app/windows.tmpl/runner/run_loop.h
@@ -1,7 +1,7 @@
 #ifndef RUN_LOOP_H_
 #define RUN_LOOP_H_
 
-#include <flutter/flutter_view_controller.h>
+#include <flutter/flutter_engine.h>
 
 #include <chrono>
 #include <set>
@@ -22,11 +22,11 @@
 
   // Registers the given Flutter instance for event servicing.
   void RegisterFlutterInstance(
-      flutter::FlutterViewController* flutter_instance);
+      flutter::FlutterEngine* flutter_instance);
 
   // Unregisters the given Flutter instance from event servicing.
   void UnregisterFlutterInstance(
-      flutter::FlutterViewController* flutter_instance);
+      flutter::FlutterEngine* flutter_instance);
 
  private:
   using TimePoint = std::chrono::steady_clock::time_point;
@@ -34,7 +34,7 @@
   // Processes all currently pending messages for registered Flutter instances.
   TimePoint ProcessFlutterMessages();
 
-  std::set<flutter::FlutterViewController*> flutter_instances_;
+  std::set<flutter::FlutterEngine*> flutter_instances_;
 };
 
 #endif  // RUN_LOOP_H_