Jonny Borges
Committed by GitHub

Merge pull request #2849 from sumitsharansatsangi/master

Removed unnecessary null check in cpaitalizeFirst and capitalize method
Showing 55 changed files with 1769 additions and 25 deletions
@@ -7,7 +7,6 @@ @@ -7,7 +7,6 @@
7 7
8 # The following line activates a set of recommended lints for Flutter apps, 8 # The following line activates a set of recommended lints for Flutter apps,
9 # packages, and plugins designed to encourage good coding practices. 9 # packages, and plugins designed to encourage good coding practices.
10 -include: package:flutter_lints/flutter.yaml  
11 10
12 linter: 11 linter:
13 # The lint rules applied to this project can be customized in the 12 # The lint rules applied to this project can be customized in the
1 import 'package:flutter/material.dart'; 1 import 'package:flutter/material.dart';
2 import 'package:get/get.dart'; 2 import 'package:get/get.dart';
3 3
4 -import 'en_us.dart';  
5 -import 'pt_br.dart'; 4 +import 'en_US.dart';
  5 +import 'pt_BR.dart';
6 6
7 class TranslationService extends Translations { 7 class TranslationService extends Translations {
8 static Locale? get locale => Get.deviceLocale; 8 static Locale? get locale => Get.deviceLocale;
@@ -15,6 +15,7 @@ class MyApp extends StatelessWidget { @@ -15,6 +15,7 @@ class MyApp extends StatelessWidget {
15 @override 15 @override
16 Widget build(BuildContext context) { 16 Widget build(BuildContext context) {
17 return GetMaterialApp( 17 return GetMaterialApp(
  18 + theme: ThemeData(useMaterial3: true),
18 debugShowCheckedModeBanner: false, 19 debugShowCheckedModeBanner: false,
19 enableLog: true, 20 enableLog: true,
20 logWriterCallback: Logger.write, 21 logWriterCallback: Logger.write,
@@ -25,9 +25,11 @@ class CasesModel { @@ -25,9 +25,11 @@ class CasesModel {
25 factory CasesModel.fromJson(Map<String, dynamic> json) => CasesModel( 25 factory CasesModel.fromJson(Map<String, dynamic> json) => CasesModel(
26 message: json["Message"] as String, 26 message: json["Message"] as String,
27 global: Global.fromJson(json["Global"] as Map<String, dynamic>), 27 global: Global.fromJson(json["Global"] as Map<String, dynamic>),
28 - countries: List<Country>.from((json["Countries"] as Iterable).map(  
29 - (x) => Country.fromJson(x as Map<String, dynamic>),  
30 - )), 28 + countries: json["Countries"] == null
  29 + ? []
  30 + : List<Country>.from((json["Countries"] as Iterable).map(
  31 + (x) => Country.fromJson(x as Map<String, dynamic>),
  32 + )),
31 date: DateTime.parse(json["Date"] as String), 33 date: DateTime.parse(json["Date"] as String),
32 ); 34 );
33 35
@@ -18,7 +18,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev @@ -18,7 +18,7 @@ publish_to: "none" # Remove this line if you wish to publish to pub.dev
18 version: 1.0.0+1 18 version: 1.0.0+1
19 19
20 environment: 20 environment:
21 - sdk: ">=2.12.0 <3.0.0" 21 + sdk: ">=2.19.1 <3.0.0"
22 22
23 dependency_overrides: 23 dependency_overrides:
24 get: 24 get:
  1 +// This is a basic Flutter widget test.
  2 +//
  3 +// To perform an interaction with a widget in your test, use the WidgetTester
  4 +// utility in the flutter_test package. For example, you can send tap and scroll
  5 +// gestures. You can also use WidgetTester to find child widgets in the widget
  6 +// tree, read text, and verify that the values of widget properties are correct.
  7 +
  8 +import 'package:flutter/material.dart';
  9 +import 'package:flutter_test/flutter_test.dart';
  10 +import 'package:get_demo/main.dart';
  11 +
  12 +void main() {
  13 + testWidgets('Counter increments smoke test', (WidgetTester tester) async {
  14 + // Build our app and trigger a frame.
  15 + await tester.pumpWidget(const MyApp());
  16 +
  17 + // Verify that our counter starts at 0.
  18 + expect(find.text('0'), findsOneWidget);
  19 + expect(find.text('1'), findsNothing);
  20 +
  21 + // Tap the '+' icon and trigger a frame.
  22 + await tester.tap(find.byIcon(Icons.add));
  23 + await tester.pump();
  24 +
  25 + // Verify that our counter has incremented.
  26 + expect(find.text('0'), findsNothing);
  27 + expect(find.text('1'), findsOneWidget);
  28 + });
  29 +}
1 # This file tracks properties of this Flutter project. 1 # This file tracks properties of this Flutter project.
2 # Used by Flutter tool to assess capabilities and perform upgrades etc. 2 # Used by Flutter tool to assess capabilities and perform upgrades etc.
3 # 3 #
4 -# This file should be version controlled and should not be manually edited. 4 +# This file should be version controlled.
5 5
6 version: 6 version:
7 - revision: b22742018b3edf16c6cadd7b76d9db5e7f9064b5 7 + revision: c07f7888888435fd9df505aa2efc38d3cf65681b
8 channel: stable 8 channel: stable
9 9
10 project_type: app 10 project_type: app
  11 +
  12 +# Tracks metadata for the flutter migrate command
  13 +migration:
  14 + platforms:
  15 + - platform: root
  16 + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  17 + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  18 + - platform: android
  19 + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  20 + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  21 + - platform: ios
  22 + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  23 + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  24 + - platform: linux
  25 + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  26 + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  27 + - platform: macos
  28 + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  29 + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  30 + - platform: web
  31 + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  32 + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  33 + - platform: windows
  34 + create_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  35 + base_revision: c07f7888888435fd9df505aa2efc38d3cf65681b
  36 +
  37 + # User provided section
  38 +
  39 + # List of Local paths (relative to this file) that should be
  40 + # ignored by the migrate tool.
  41 + #
  42 + # Files that are not part of the templates will be ignored by default.
  43 + unmanaged_files:
  44 + - 'lib/main.dart'
  45 + - 'ios/Runner.xcodeproj/project.pbxproj'
  1 +# This file configures the analyzer, which statically analyzes Dart code to
  2 +# check for errors, warnings, and lints.
  3 +#
  4 +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
  5 +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
  6 +# invoked from the command line by running `flutter analyze`.
  7 +
  8 +# The following line activates a set of recommended lints for Flutter apps,
  9 +# packages, and plugins designed to encourage good coding practices.
  10 +include: package:flutter_lints/flutter.yaml
  11 +
  12 +linter:
  13 + # The lint rules applied to this project can be customized in the
  14 + # section below to disable rules from the `package:flutter_lints/flutter.yaml`
  15 + # included above or to enable additional rules. A list of all available lints
  16 + # and their documentation is published at
  17 + # https://dart-lang.github.io/linter/lints/index.html.
  18 + #
  19 + # Instead of disabling a lint rule for the entire project in the
  20 + # section below, it can also be suppressed for a single line of code
  21 + # or a specific dart file by using the `// ignore: name_of_lint` and
  22 + # `// ignore_for_file: name_of_lint` syntax on the line or in the file
  23 + # producing the lint.
  24 + rules:
  25 + # avoid_print: false # Uncomment to disable the `avoid_print` rule
  26 + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
  27 +
  28 +# Additional information about this file can be found at
  29 +# https://dart.dev/guides/language/analysis-options
1 -sdk.dir=/Users/jonatasborges/Library/Android/sdk  
2 -flutter.sdk=/Users/jonatasborges/flutter  
  1 +sdk.dir=/home/sumit/Android/Sdk
  2 +flutter.sdk=/home/sumit/softwares/flutter
1 // This is a generated file; do not edit or check into version control. 1 // This is a generated file; do not edit or check into version control.
2 -FLUTTER_ROOT=/Users/jonatasborges/flutter  
3 -FLUTTER_APPLICATION_PATH=/Users/jonatasborges/getx-parse/getx/example_nav2 2 +FLUTTER_ROOT=/home/sumit/softwares/flutter
  3 +FLUTTER_APPLICATION_PATH=/home/sumit/StudioProjects/getx/example_nav2
4 COCOAPODS_PARALLEL_CODE_SIGN=true 4 COCOAPODS_PARALLEL_CODE_SIGN=true
5 FLUTTER_TARGET=lib/main.dart 5 FLUTTER_TARGET=lib/main.dart
6 FLUTTER_BUILD_DIR=build 6 FLUTTER_BUILD_DIR=build
1 #!/bin/sh 1 #!/bin/sh
2 # This is a generated file; do not edit or check into version control. 2 # This is a generated file; do not edit or check into version control.
3 -export "FLUTTER_ROOT=/Users/jonatasborges/flutter"  
4 -export "FLUTTER_APPLICATION_PATH=/Users/jonatasborges/getx-parse/getx/example_nav2" 3 +export "FLUTTER_ROOT=/home/sumit/softwares/flutter"
  4 +export "FLUTTER_APPLICATION_PATH=/home/sumit/StudioProjects/getx/example_nav2"
5 export "COCOAPODS_PARALLEL_CODE_SIGN=true" 5 export "COCOAPODS_PARALLEL_CODE_SIGN=true"
6 export "FLUTTER_TARGET=lib/main.dart" 6 export "FLUTTER_TARGET=lib/main.dart"
7 export "FLUTTER_BUILD_DIR=build" 7 export "FLUTTER_BUILD_DIR=build"
  1 +flutter/ephemeral
  1 +# Project-level configuration.
  2 +cmake_minimum_required(VERSION 3.10)
  3 +project(runner LANGUAGES CXX)
  4 +
  5 +# The name of the executable created for the application. Change this to change
  6 +# the on-disk name of your application.
  7 +set(BINARY_NAME "example_nav2")
  8 +# The unique GTK application identifier for this application. See:
  9 +# https://wiki.gnome.org/HowDoI/ChooseApplicationID
  10 +set(APPLICATION_ID "com.get.example_nav2")
  11 +
  12 +# Explicitly opt in to modern CMake behaviors to avoid warnings with recent
  13 +# versions of CMake.
  14 +cmake_policy(SET CMP0063 NEW)
  15 +
  16 +# Load bundled libraries from the lib/ directory relative to the binary.
  17 +set(CMAKE_INSTALL_RPATH "$ORIGIN/lib")
  18 +
  19 +# Root filesystem for cross-building.
  20 +if(FLUTTER_TARGET_PLATFORM_SYSROOT)
  21 + set(CMAKE_SYSROOT ${FLUTTER_TARGET_PLATFORM_SYSROOT})
  22 + set(CMAKE_FIND_ROOT_PATH ${CMAKE_SYSROOT})
  23 + set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
  24 + set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
  25 + set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
  26 + set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
  27 +endif()
  28 +
  29 +# Define build configuration options.
  30 +if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
  31 + set(CMAKE_BUILD_TYPE "Debug" CACHE
  32 + STRING "Flutter build mode" FORCE)
  33 + set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
  34 + "Debug" "Profile" "Release")
  35 +endif()
  36 +
  37 +# Compilation settings that should be applied to most targets.
  38 +#
  39 +# Be cautious about adding new options here, as plugins use this function by
  40 +# default. In most cases, you should add new options to specific targets instead
  41 +# of modifying this function.
  42 +function(APPLY_STANDARD_SETTINGS TARGET)
  43 + target_compile_features(${TARGET} PUBLIC cxx_std_14)
  44 + target_compile_options(${TARGET} PRIVATE -Wall -Werror)
  45 + target_compile_options(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:-O3>")
  46 + target_compile_definitions(${TARGET} PRIVATE "$<$<NOT:$<CONFIG:Debug>>:NDEBUG>")
  47 +endfunction()
  48 +
  49 +# Flutter library and tool build rules.
  50 +set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter")
  51 +add_subdirectory(${FLUTTER_MANAGED_DIR})
  52 +
  53 +# System-level dependencies.
  54 +find_package(PkgConfig REQUIRED)
  55 +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
  56 +
  57 +add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}")
  58 +
  59 +# Define the application target. To change its name, change BINARY_NAME above,
  60 +# not the value here, or `flutter run` will no longer work.
  61 +#
  62 +# Any new source files that you add to the application should be added here.
  63 +add_executable(${BINARY_NAME}
  64 + "main.cc"
  65 + "my_application.cc"
  66 + "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc"
  67 +)
  68 +
  69 +# Apply the standard set of build settings. This can be removed for applications
  70 +# that need different build settings.
  71 +apply_standard_settings(${BINARY_NAME})
  72 +
  73 +# Add dependency libraries. Add any application-specific dependencies here.
  74 +target_link_libraries(${BINARY_NAME} PRIVATE flutter)
  75 +target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK)
  76 +
  77 +# Run the Flutter tool portions of the build. This must not be removed.
  78 +add_dependencies(${BINARY_NAME} flutter_assemble)
  79 +
  80 +# Only the install-generated bundle's copy of the executable will launch
  81 +# correctly, since the resources must in the right relative locations. To avoid
  82 +# people trying to run the unbundled copy, put it in a subdirectory instead of
  83 +# the default top-level location.
  84 +set_target_properties(${BINARY_NAME}
  85 + PROPERTIES
  86 + RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run"
  87 +)
  88 +
  89 +# Generated plugin build rules, which manage building the plugins and adding
  90 +# them to the application.
  91 +include(flutter/generated_plugins.cmake)
  92 +
  93 +
  94 +# === Installation ===
  95 +# By default, "installing" just makes a relocatable bundle in the build
  96 +# directory.
  97 +set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle")
  98 +if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
  99 + set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE)
  100 +endif()
  101 +
  102 +# Start with a clean build bundle directory every time.
  103 +install(CODE "
  104 + file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\")
  105 + " COMPONENT Runtime)
  106 +
  107 +set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data")
  108 +set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib")
  109 +
  110 +install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}"
  111 + COMPONENT Runtime)
  112 +
  113 +install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}"
  114 + COMPONENT Runtime)
  115 +
  116 +install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
  117 + COMPONENT Runtime)
  118 +
  119 +foreach(bundled_library ${PLUGIN_BUNDLED_LIBRARIES})
  120 + install(FILES "${bundled_library}"
  121 + DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
  122 + COMPONENT Runtime)
  123 +endforeach(bundled_library)
  124 +
  125 +# Fully re-copy the assets directory on each build to avoid having stale files
  126 +# from a previous install.
  127 +set(FLUTTER_ASSET_DIR_NAME "flutter_assets")
  128 +install(CODE "
  129 + file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\")
  130 + " COMPONENT Runtime)
  131 +install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}"
  132 + DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime)
  133 +
  134 +# Install the AOT library on non-Debug builds only.
  135 +if(NOT CMAKE_BUILD_TYPE MATCHES "Debug")
  136 + install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}"
  137 + COMPONENT Runtime)
  138 +endif()
  1 +# This file controls Flutter-level build steps. It should not be edited.
  2 +cmake_minimum_required(VERSION 3.10)
  3 +
  4 +set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral")
  5 +
  6 +# Configuration provided via flutter tool.
  7 +include(${EPHEMERAL_DIR}/generated_config.cmake)
  8 +
  9 +# TODO: Move the rest of this into files in ephemeral. See
  10 +# https://github.com/flutter/flutter/issues/57146.
  11 +
  12 +# Serves the same purpose as list(TRANSFORM ... PREPEND ...),
  13 +# which isn't available in 3.10.
  14 +function(list_prepend LIST_NAME PREFIX)
  15 + set(NEW_LIST "")
  16 + foreach(element ${${LIST_NAME}})
  17 + list(APPEND NEW_LIST "${PREFIX}${element}")
  18 + endforeach(element)
  19 + set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE)
  20 +endfunction()
  21 +
  22 +# === Flutter Library ===
  23 +# System-level dependencies.
  24 +find_package(PkgConfig REQUIRED)
  25 +pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
  26 +pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
  27 +pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
  28 +
  29 +set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
  30 +
  31 +# Published to parent scope for install step.
  32 +set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE)
  33 +set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE)
  34 +set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE)
  35 +set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE)
  36 +
  37 +list(APPEND FLUTTER_LIBRARY_HEADERS
  38 + "fl_basic_message_channel.h"
  39 + "fl_binary_codec.h"
  40 + "fl_binary_messenger.h"
  41 + "fl_dart_project.h"
  42 + "fl_engine.h"
  43 + "fl_json_message_codec.h"
  44 + "fl_json_method_codec.h"
  45 + "fl_message_codec.h"
  46 + "fl_method_call.h"
  47 + "fl_method_channel.h"
  48 + "fl_method_codec.h"
  49 + "fl_method_response.h"
  50 + "fl_plugin_registrar.h"
  51 + "fl_plugin_registry.h"
  52 + "fl_standard_message_codec.h"
  53 + "fl_standard_method_codec.h"
  54 + "fl_string_codec.h"
  55 + "fl_value.h"
  56 + "fl_view.h"
  57 + "flutter_linux.h"
  58 +)
  59 +list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/")
  60 +add_library(flutter INTERFACE)
  61 +target_include_directories(flutter INTERFACE
  62 + "${EPHEMERAL_DIR}"
  63 +)
  64 +target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}")
  65 +target_link_libraries(flutter INTERFACE
  66 + PkgConfig::GTK
  67 + PkgConfig::GLIB
  68 + PkgConfig::GIO
  69 +)
  70 +add_dependencies(flutter flutter_assemble)
  71 +
  72 +# === Flutter tool backend ===
  73 +# _phony_ is a non-existent file to force this command to run every time,
  74 +# since currently there's no way to get a full input/output list from the
  75 +# flutter tool.
  76 +add_custom_command(
  77 + OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS}
  78 + ${CMAKE_CURRENT_BINARY_DIR}/_phony_
  79 + COMMAND ${CMAKE_COMMAND} -E env
  80 + ${FLUTTER_TOOL_ENVIRONMENT}
  81 + "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh"
  82 + ${FLUTTER_TARGET_PLATFORM} ${CMAKE_BUILD_TYPE}
  83 + VERBATIM
  84 +)
  85 +add_custom_target(flutter_assemble DEPENDS
  86 + "${FLUTTER_LIBRARY}"
  87 + ${FLUTTER_LIBRARY_HEADERS}
  88 +)
  1 +//
  2 +// Generated file. Do not edit.
  3 +//
  4 +
  5 +// clang-format off
  6 +
  7 +#include "generated_plugin_registrant.h"
  8 +
  9 +
  10 +void fl_register_plugins(FlPluginRegistry* registry) {
  11 +}
  1 +//
  2 +// Generated file. Do not edit.
  3 +//
  4 +
  5 +// clang-format off
  6 +
  7 +#ifndef GENERATED_PLUGIN_REGISTRANT_
  8 +#define GENERATED_PLUGIN_REGISTRANT_
  9 +
  10 +#include <flutter_linux/flutter_linux.h>
  11 +
  12 +// Registers Flutter plugins.
  13 +void fl_register_plugins(FlPluginRegistry* registry);
  14 +
  15 +#endif // GENERATED_PLUGIN_REGISTRANT_
  1 +#
  2 +# Generated file, do not edit.
  3 +#
  4 +
  5 +list(APPEND FLUTTER_PLUGIN_LIST
  6 +)
  7 +
  8 +list(APPEND FLUTTER_FFI_PLUGIN_LIST
  9 +)
  10 +
  11 +set(PLUGIN_BUNDLED_LIBRARIES)
  12 +
  13 +foreach(plugin ${FLUTTER_PLUGIN_LIST})
  14 + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${plugin}/linux plugins/${plugin})
  15 + target_link_libraries(${BINARY_NAME} PRIVATE ${plugin}_plugin)
  16 + list(APPEND PLUGIN_BUNDLED_LIBRARIES $<TARGET_FILE:${plugin}_plugin>)
  17 + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${plugin}_bundled_libraries})
  18 +endforeach(plugin)
  19 +
  20 +foreach(ffi_plugin ${FLUTTER_FFI_PLUGIN_LIST})
  21 + add_subdirectory(flutter/ephemeral/.plugin_symlinks/${ffi_plugin}/linux plugins/${ffi_plugin})
  22 + list(APPEND PLUGIN_BUNDLED_LIBRARIES ${${ffi_plugin}_bundled_libraries})
  23 +endforeach(ffi_plugin)
  1 +#include "my_application.h"
  2 +
  3 +int main(int argc, char** argv) {
  4 + g_autoptr(MyApplication) app = my_application_new();
  5 + return g_application_run(G_APPLICATION(app), argc, argv);
  6 +}
  1 +#include "my_application.h"
  2 +
  3 +#include <flutter_linux/flutter_linux.h>
  4 +#ifdef GDK_WINDOWING_X11
  5 +#include <gdk/gdkx.h>
  6 +#endif
  7 +
  8 +#include "flutter/generated_plugin_registrant.h"
  9 +
  10 +struct _MyApplication {
  11 + GtkApplication parent_instance;
  12 + char** dart_entrypoint_arguments;
  13 +};
  14 +
  15 +G_DEFINE_TYPE(MyApplication, my_application, GTK_TYPE_APPLICATION)
  16 +
  17 +// Implements GApplication::activate.
  18 +static void my_application_activate(GApplication* application) {
  19 + MyApplication* self = MY_APPLICATION(application);
  20 + GtkWindow* window =
  21 + GTK_WINDOW(gtk_application_window_new(GTK_APPLICATION(application)));
  22 +
  23 + // Use a header bar when running in GNOME as this is the common style used
  24 + // by applications and is the setup most users will be using (e.g. Ubuntu
  25 + // desktop).
  26 + // If running on X and not using GNOME then just use a traditional title bar
  27 + // in case the window manager does more exotic layout, e.g. tiling.
  28 + // If running on Wayland assume the header bar will work (may need changing
  29 + // if future cases occur).
  30 + gboolean use_header_bar = TRUE;
  31 +#ifdef GDK_WINDOWING_X11
  32 + GdkScreen* screen = gtk_window_get_screen(window);
  33 + if (GDK_IS_X11_SCREEN(screen)) {
  34 + const gchar* wm_name = gdk_x11_screen_get_window_manager_name(screen);
  35 + if (g_strcmp0(wm_name, "GNOME Shell") != 0) {
  36 + use_header_bar = FALSE;
  37 + }
  38 + }
  39 +#endif
  40 + if (use_header_bar) {
  41 + GtkHeaderBar* header_bar = GTK_HEADER_BAR(gtk_header_bar_new());
  42 + gtk_widget_show(GTK_WIDGET(header_bar));
  43 + gtk_header_bar_set_title(header_bar, "example_nav2");
  44 + gtk_header_bar_set_show_close_button(header_bar, TRUE);
  45 + gtk_window_set_titlebar(window, GTK_WIDGET(header_bar));
  46 + } else {
  47 + gtk_window_set_title(window, "example_nav2");
  48 + }
  49 +
  50 + gtk_window_set_default_size(window, 1280, 720);
  51 + gtk_widget_show(GTK_WIDGET(window));
  52 +
  53 + g_autoptr(FlDartProject) project = fl_dart_project_new();
  54 + fl_dart_project_set_dart_entrypoint_arguments(project, self->dart_entrypoint_arguments);
  55 +
  56 + FlView* view = fl_view_new(project);
  57 + gtk_widget_show(GTK_WIDGET(view));
  58 + gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(view));
  59 +
  60 + fl_register_plugins(FL_PLUGIN_REGISTRY(view));
  61 +
  62 + gtk_widget_grab_focus(GTK_WIDGET(view));
  63 +}
  64 +
  65 +// Implements GApplication::local_command_line.
  66 +static gboolean my_application_local_command_line(GApplication* application, gchar*** arguments, int* exit_status) {
  67 + MyApplication* self = MY_APPLICATION(application);
  68 + // Strip out the first argument as it is the binary name.
  69 + self->dart_entrypoint_arguments = g_strdupv(*arguments + 1);
  70 +
  71 + g_autoptr(GError) error = nullptr;
  72 + if (!g_application_register(application, nullptr, &error)) {
  73 + g_warning("Failed to register: %s", error->message);
  74 + *exit_status = 1;
  75 + return TRUE;
  76 + }
  77 +
  78 + g_application_activate(application);
  79 + *exit_status = 0;
  80 +
  81 + return TRUE;
  82 +}
  83 +
  84 +// Implements GObject::dispose.
  85 +static void my_application_dispose(GObject* object) {
  86 + MyApplication* self = MY_APPLICATION(object);
  87 + g_clear_pointer(&self->dart_entrypoint_arguments, g_strfreev);
  88 + G_OBJECT_CLASS(my_application_parent_class)->dispose(object);
  89 +}
  90 +
  91 +static void my_application_class_init(MyApplicationClass* klass) {
  92 + G_APPLICATION_CLASS(klass)->activate = my_application_activate;
  93 + G_APPLICATION_CLASS(klass)->local_command_line = my_application_local_command_line;
  94 + G_OBJECT_CLASS(klass)->dispose = my_application_dispose;
  95 +}
  96 +
  97 +static void my_application_init(MyApplication* self) {}
  98 +
  99 +MyApplication* my_application_new() {
  100 + return MY_APPLICATION(g_object_new(my_application_get_type(),
  101 + "application-id", APPLICATION_ID,
  102 + "flags", G_APPLICATION_NON_UNIQUE,
  103 + nullptr));
  104 +}
  1 +#ifndef FLUTTER_MY_APPLICATION_H_
  2 +#define FLUTTER_MY_APPLICATION_H_
  3 +
  4 +#include <gtk/gtk.h>
  5 +
  6 +G_DECLARE_FINAL_TYPE(MyApplication, my_application, MY, APPLICATION,
  7 + GtkApplication)
  8 +
  9 +/**
  10 + * my_application_new:
  11 + *
  12 + * Creates a new Flutter-based application.
  13 + *
  14 + * Returns: a new #MyApplication.
  15 + */
  16 +MyApplication* my_application_new();
  17 +
  18 +#endif // FLUTTER_MY_APPLICATION_H_
  1 +# Flutter-related
  2 +**/Flutter/ephemeral/
  3 +**/Pods/
  4 +
  5 +# Xcode-related
  6 +**/dgph
  7 +**/xcuserdata/
  1 +#include "ephemeral/Flutter-Generated.xcconfig"
  1 +#include "ephemeral/Flutter-Generated.xcconfig"
  1 +//
  2 +// Generated file. Do not edit.
  3 +//
  4 +
  5 +import FlutterMacOS
  6 +import Foundation
  7 +
  8 +
  9 +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
  10 +}
  1 +// !$*UTF8*$!
  2 +{
  3 + archiveVersion = 1;
  4 + classes = {
  5 + };
  6 + objectVersion = 54;
  7 + objects = {
  8 +
  9 +/* Begin PBXAggregateTarget section */
  10 + 33CC111A2044C6BA0003C045 /* Flutter Assemble */ = {
  11 + isa = PBXAggregateTarget;
  12 + buildConfigurationList = 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */;
  13 + buildPhases = (
  14 + 33CC111E2044C6BF0003C045 /* ShellScript */,
  15 + );
  16 + dependencies = (
  17 + );
  18 + name = "Flutter Assemble";
  19 + productName = FLX;
  20 + };
  21 +/* End PBXAggregateTarget section */
  22 +
  23 +/* Begin PBXBuildFile section */
  24 + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */; };
  25 + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC10F02044A3C60003C045 /* AppDelegate.swift */; };
  26 + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F22044A3C60003C045 /* Assets.xcassets */; };
  27 + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33CC10F42044A3C60003C045 /* MainMenu.xib */; };
  28 + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */; };
  29 +/* End PBXBuildFile section */
  30 +
  31 +/* Begin PBXContainerItemProxy section */
  32 + 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */ = {
  33 + isa = PBXContainerItemProxy;
  34 + containerPortal = 33CC10E52044A3C60003C045 /* Project object */;
  35 + proxyType = 1;
  36 + remoteGlobalIDString = 33CC111A2044C6BA0003C045;
  37 + remoteInfo = FLX;
  38 + };
  39 +/* End PBXContainerItemProxy section */
  40 +
  41 +/* Begin PBXCopyFilesBuildPhase section */
  42 + 33CC110E2044A8840003C045 /* Bundle Framework */ = {
  43 + isa = PBXCopyFilesBuildPhase;
  44 + buildActionMask = 2147483647;
  45 + dstPath = "";
  46 + dstSubfolderSpec = 10;
  47 + files = (
  48 + );
  49 + name = "Bundle Framework";
  50 + runOnlyForDeploymentPostprocessing = 0;
  51 + };
  52 +/* End PBXCopyFilesBuildPhase section */
  53 +
  54 +/* Begin PBXFileReference section */
  55 + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Warnings.xcconfig; sourceTree = "<group>"; };
  56 + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GeneratedPluginRegistrant.swift; sourceTree = "<group>"; };
  57 + 33CC10ED2044A3C60003C045 /* example_nav2.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "example_nav2.app"; sourceTree = BUILT_PRODUCTS_DIR; };
  58 + 33CC10F02044A3C60003C045 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
  59 + 33CC10F22044A3C60003C045 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Assets.xcassets; path = Runner/Assets.xcassets; sourceTree = "<group>"; };
  60 + 33CC10F52044A3C60003C045 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/MainMenu.xib; sourceTree = "<group>"; };
  61 + 33CC10F72044A3C60003C045 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = Runner/Info.plist; sourceTree = "<group>"; };
  62 + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MainFlutterWindow.swift; sourceTree = "<group>"; };
  63 + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Debug.xcconfig"; sourceTree = "<group>"; };
  64 + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = "Flutter-Release.xcconfig"; sourceTree = "<group>"; };
  65 + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = "Flutter-Generated.xcconfig"; path = "ephemeral/Flutter-Generated.xcconfig"; sourceTree = "<group>"; };
  66 + 33E51913231747F40026EE4D /* DebugProfile.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = DebugProfile.entitlements; sourceTree = "<group>"; };
  67 + 33E51914231749380026EE4D /* Release.entitlements */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.entitlements; path = Release.entitlements; sourceTree = "<group>"; };
  68 + 33E5194F232828860026EE4D /* AppInfo.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = AppInfo.xcconfig; sourceTree = "<group>"; };
  69 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Release.xcconfig; sourceTree = "<group>"; };
  70 + 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Debug.xcconfig; sourceTree = "<group>"; };
  71 +/* End PBXFileReference section */
  72 +
  73 +/* Begin PBXFrameworksBuildPhase section */
  74 + 33CC10EA2044A3C60003C045 /* Frameworks */ = {
  75 + isa = PBXFrameworksBuildPhase;
  76 + buildActionMask = 2147483647;
  77 + files = (
  78 + );
  79 + runOnlyForDeploymentPostprocessing = 0;
  80 + };
  81 +/* End PBXFrameworksBuildPhase section */
  82 +
  83 +/* Begin PBXGroup section */
  84 + 33BA886A226E78AF003329D5 /* Configs */ = {
  85 + isa = PBXGroup;
  86 + children = (
  87 + 33E5194F232828860026EE4D /* AppInfo.xcconfig */,
  88 + 9740EEB21CF90195004384FC /* Debug.xcconfig */,
  89 + 7AFA3C8E1D35360C0083082E /* Release.xcconfig */,
  90 + 333000ED22D3DE5D00554162 /* Warnings.xcconfig */,
  91 + );
  92 + path = Configs;
  93 + sourceTree = "<group>";
  94 + };
  95 + 33CC10E42044A3C60003C045 = {
  96 + isa = PBXGroup;
  97 + children = (
  98 + 33FAB671232836740065AC1E /* Runner */,
  99 + 33CEB47122A05771004F2AC0 /* Flutter */,
  100 + 33CC10EE2044A3C60003C045 /* Products */,
  101 + D73912EC22F37F3D000D13A0 /* Frameworks */,
  102 + );
  103 + sourceTree = "<group>";
  104 + };
  105 + 33CC10EE2044A3C60003C045 /* Products */ = {
  106 + isa = PBXGroup;
  107 + children = (
  108 + 33CC10ED2044A3C60003C045 /* example_nav2.app */,
  109 + );
  110 + name = Products;
  111 + sourceTree = "<group>";
  112 + };
  113 + 33CC11242044D66E0003C045 /* Resources */ = {
  114 + isa = PBXGroup;
  115 + children = (
  116 + 33CC10F22044A3C60003C045 /* Assets.xcassets */,
  117 + 33CC10F42044A3C60003C045 /* MainMenu.xib */,
  118 + 33CC10F72044A3C60003C045 /* Info.plist */,
  119 + );
  120 + name = Resources;
  121 + path = ..;
  122 + sourceTree = "<group>";
  123 + };
  124 + 33CEB47122A05771004F2AC0 /* Flutter */ = {
  125 + isa = PBXGroup;
  126 + children = (
  127 + 335BBD1A22A9A15E00E9071D /* GeneratedPluginRegistrant.swift */,
  128 + 33CEB47222A05771004F2AC0 /* Flutter-Debug.xcconfig */,
  129 + 33CEB47422A05771004F2AC0 /* Flutter-Release.xcconfig */,
  130 + 33CEB47722A0578A004F2AC0 /* Flutter-Generated.xcconfig */,
  131 + );
  132 + path = Flutter;
  133 + sourceTree = "<group>";
  134 + };
  135 + 33FAB671232836740065AC1E /* Runner */ = {
  136 + isa = PBXGroup;
  137 + children = (
  138 + 33CC10F02044A3C60003C045 /* AppDelegate.swift */,
  139 + 33CC11122044BFA00003C045 /* MainFlutterWindow.swift */,
  140 + 33E51913231747F40026EE4D /* DebugProfile.entitlements */,
  141 + 33E51914231749380026EE4D /* Release.entitlements */,
  142 + 33CC11242044D66E0003C045 /* Resources */,
  143 + 33BA886A226E78AF003329D5 /* Configs */,
  144 + );
  145 + path = Runner;
  146 + sourceTree = "<group>";
  147 + };
  148 + D73912EC22F37F3D000D13A0 /* Frameworks */ = {
  149 + isa = PBXGroup;
  150 + children = (
  151 + );
  152 + name = Frameworks;
  153 + sourceTree = "<group>";
  154 + };
  155 +/* End PBXGroup section */
  156 +
  157 +/* Begin PBXNativeTarget section */
  158 + 33CC10EC2044A3C60003C045 /* Runner */ = {
  159 + isa = PBXNativeTarget;
  160 + buildConfigurationList = 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */;
  161 + buildPhases = (
  162 + 33CC10E92044A3C60003C045 /* Sources */,
  163 + 33CC10EA2044A3C60003C045 /* Frameworks */,
  164 + 33CC10EB2044A3C60003C045 /* Resources */,
  165 + 33CC110E2044A8840003C045 /* Bundle Framework */,
  166 + 3399D490228B24CF009A79C7 /* ShellScript */,
  167 + );
  168 + buildRules = (
  169 + );
  170 + dependencies = (
  171 + 33CC11202044C79F0003C045 /* PBXTargetDependency */,
  172 + );
  173 + name = Runner;
  174 + productName = Runner;
  175 + productReference = 33CC10ED2044A3C60003C045 /* example_nav2.app */;
  176 + productType = "com.apple.product-type.application";
  177 + };
  178 +/* End PBXNativeTarget section */
  179 +
  180 +/* Begin PBXProject section */
  181 + 33CC10E52044A3C60003C045 /* Project object */ = {
  182 + isa = PBXProject;
  183 + attributes = {
  184 + LastSwiftUpdateCheck = 0920;
  185 + LastUpgradeCheck = 1300;
  186 + ORGANIZATIONNAME = "";
  187 + TargetAttributes = {
  188 + 33CC10EC2044A3C60003C045 = {
  189 + CreatedOnToolsVersion = 9.2;
  190 + LastSwiftMigration = 1100;
  191 + ProvisioningStyle = Automatic;
  192 + SystemCapabilities = {
  193 + com.apple.Sandbox = {
  194 + enabled = 1;
  195 + };
  196 + };
  197 + };
  198 + 33CC111A2044C6BA0003C045 = {
  199 + CreatedOnToolsVersion = 9.2;
  200 + ProvisioningStyle = Manual;
  201 + };
  202 + };
  203 + };
  204 + buildConfigurationList = 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */;
  205 + compatibilityVersion = "Xcode 9.3";
  206 + developmentRegion = en;
  207 + hasScannedForEncodings = 0;
  208 + knownRegions = (
  209 + en,
  210 + Base,
  211 + );
  212 + mainGroup = 33CC10E42044A3C60003C045;
  213 + productRefGroup = 33CC10EE2044A3C60003C045 /* Products */;
  214 + projectDirPath = "";
  215 + projectRoot = "";
  216 + targets = (
  217 + 33CC10EC2044A3C60003C045 /* Runner */,
  218 + 33CC111A2044C6BA0003C045 /* Flutter Assemble */,
  219 + );
  220 + };
  221 +/* End PBXProject section */
  222 +
  223 +/* Begin PBXResourcesBuildPhase section */
  224 + 33CC10EB2044A3C60003C045 /* Resources */ = {
  225 + isa = PBXResourcesBuildPhase;
  226 + buildActionMask = 2147483647;
  227 + files = (
  228 + 33CC10F32044A3C60003C045 /* Assets.xcassets in Resources */,
  229 + 33CC10F62044A3C60003C045 /* MainMenu.xib in Resources */,
  230 + );
  231 + runOnlyForDeploymentPostprocessing = 0;
  232 + };
  233 +/* End PBXResourcesBuildPhase section */
  234 +
  235 +/* Begin PBXShellScriptBuildPhase section */
  236 + 3399D490228B24CF009A79C7 /* ShellScript */ = {
  237 + isa = PBXShellScriptBuildPhase;
  238 + alwaysOutOfDate = 1;
  239 + buildActionMask = 2147483647;
  240 + files = (
  241 + );
  242 + inputFileListPaths = (
  243 + );
  244 + inputPaths = (
  245 + );
  246 + outputFileListPaths = (
  247 + );
  248 + outputPaths = (
  249 + );
  250 + runOnlyForDeploymentPostprocessing = 0;
  251 + shellPath = /bin/sh;
  252 + shellScript = "echo \"$PRODUCT_NAME.app\" > \"$PROJECT_DIR\"/Flutter/ephemeral/.app_filename && \"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh embed\n";
  253 + };
  254 + 33CC111E2044C6BF0003C045 /* ShellScript */ = {
  255 + isa = PBXShellScriptBuildPhase;
  256 + buildActionMask = 2147483647;
  257 + files = (
  258 + );
  259 + inputFileListPaths = (
  260 + Flutter/ephemeral/FlutterInputs.xcfilelist,
  261 + );
  262 + inputPaths = (
  263 + Flutter/ephemeral/tripwire,
  264 + );
  265 + outputFileListPaths = (
  266 + Flutter/ephemeral/FlutterOutputs.xcfilelist,
  267 + );
  268 + outputPaths = (
  269 + );
  270 + runOnlyForDeploymentPostprocessing = 0;
  271 + shellPath = /bin/sh;
  272 + shellScript = "\"$FLUTTER_ROOT\"/packages/flutter_tools/bin/macos_assemble.sh && touch Flutter/ephemeral/tripwire";
  273 + };
  274 +/* End PBXShellScriptBuildPhase section */
  275 +
  276 +/* Begin PBXSourcesBuildPhase section */
  277 + 33CC10E92044A3C60003C045 /* Sources */ = {
  278 + isa = PBXSourcesBuildPhase;
  279 + buildActionMask = 2147483647;
  280 + files = (
  281 + 33CC11132044BFA00003C045 /* MainFlutterWindow.swift in Sources */,
  282 + 33CC10F12044A3C60003C045 /* AppDelegate.swift in Sources */,
  283 + 335BBD1B22A9A15E00E9071D /* GeneratedPluginRegistrant.swift in Sources */,
  284 + );
  285 + runOnlyForDeploymentPostprocessing = 0;
  286 + };
  287 +/* End PBXSourcesBuildPhase section */
  288 +
  289 +/* Begin PBXTargetDependency section */
  290 + 33CC11202044C79F0003C045 /* PBXTargetDependency */ = {
  291 + isa = PBXTargetDependency;
  292 + target = 33CC111A2044C6BA0003C045 /* Flutter Assemble */;
  293 + targetProxy = 33CC111F2044C79F0003C045 /* PBXContainerItemProxy */;
  294 + };
  295 +/* End PBXTargetDependency section */
  296 +
  297 +/* Begin PBXVariantGroup section */
  298 + 33CC10F42044A3C60003C045 /* MainMenu.xib */ = {
  299 + isa = PBXVariantGroup;
  300 + children = (
  301 + 33CC10F52044A3C60003C045 /* Base */,
  302 + );
  303 + name = MainMenu.xib;
  304 + path = Runner;
  305 + sourceTree = "<group>";
  306 + };
  307 +/* End PBXVariantGroup section */
  308 +
  309 +/* Begin XCBuildConfiguration section */
  310 + 338D0CE9231458BD00FA5F75 /* Profile */ = {
  311 + isa = XCBuildConfiguration;
  312 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  313 + buildSettings = {
  314 + ALWAYS_SEARCH_USER_PATHS = NO;
  315 + CLANG_ANALYZER_NONNULL = YES;
  316 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  317 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  318 + CLANG_CXX_LIBRARY = "libc++";
  319 + CLANG_ENABLE_MODULES = YES;
  320 + CLANG_ENABLE_OBJC_ARC = YES;
  321 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  322 + CLANG_WARN_BOOL_CONVERSION = YES;
  323 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  324 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  325 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  326 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  327 + CLANG_WARN_EMPTY_BODY = YES;
  328 + CLANG_WARN_ENUM_CONVERSION = YES;
  329 + CLANG_WARN_INFINITE_RECURSION = YES;
  330 + CLANG_WARN_INT_CONVERSION = YES;
  331 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  332 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  333 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  334 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  335 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  336 + CODE_SIGN_IDENTITY = "-";
  337 + COPY_PHASE_STRIP = NO;
  338 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  339 + ENABLE_NS_ASSERTIONS = NO;
  340 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  341 + GCC_C_LANGUAGE_STANDARD = gnu11;
  342 + GCC_NO_COMMON_BLOCKS = YES;
  343 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  344 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  345 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  346 + GCC_WARN_UNUSED_FUNCTION = YES;
  347 + GCC_WARN_UNUSED_VARIABLE = YES;
  348 + MACOSX_DEPLOYMENT_TARGET = 10.14;
  349 + MTL_ENABLE_DEBUG_INFO = NO;
  350 + SDKROOT = macosx;
  351 + SWIFT_COMPILATION_MODE = wholemodule;
  352 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  353 + };
  354 + name = Profile;
  355 + };
  356 + 338D0CEA231458BD00FA5F75 /* Profile */ = {
  357 + isa = XCBuildConfiguration;
  358 + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
  359 + buildSettings = {
  360 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  361 + CLANG_ENABLE_MODULES = YES;
  362 + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
  363 + CODE_SIGN_STYLE = Automatic;
  364 + COMBINE_HIDPI_IMAGES = YES;
  365 + INFOPLIST_FILE = Runner/Info.plist;
  366 + LD_RUNPATH_SEARCH_PATHS = (
  367 + "$(inherited)",
  368 + "@executable_path/../Frameworks",
  369 + );
  370 + PROVISIONING_PROFILE_SPECIFIER = "";
  371 + SWIFT_VERSION = 5.0;
  372 + };
  373 + name = Profile;
  374 + };
  375 + 338D0CEB231458BD00FA5F75 /* Profile */ = {
  376 + isa = XCBuildConfiguration;
  377 + buildSettings = {
  378 + CODE_SIGN_STYLE = Manual;
  379 + PRODUCT_NAME = "$(TARGET_NAME)";
  380 + };
  381 + name = Profile;
  382 + };
  383 + 33CC10F92044A3C60003C045 /* Debug */ = {
  384 + isa = XCBuildConfiguration;
  385 + baseConfigurationReference = 9740EEB21CF90195004384FC /* Debug.xcconfig */;
  386 + buildSettings = {
  387 + ALWAYS_SEARCH_USER_PATHS = NO;
  388 + CLANG_ANALYZER_NONNULL = YES;
  389 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  390 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  391 + CLANG_CXX_LIBRARY = "libc++";
  392 + CLANG_ENABLE_MODULES = YES;
  393 + CLANG_ENABLE_OBJC_ARC = YES;
  394 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  395 + CLANG_WARN_BOOL_CONVERSION = YES;
  396 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  397 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  398 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  399 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  400 + CLANG_WARN_EMPTY_BODY = YES;
  401 + CLANG_WARN_ENUM_CONVERSION = YES;
  402 + CLANG_WARN_INFINITE_RECURSION = YES;
  403 + CLANG_WARN_INT_CONVERSION = YES;
  404 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  405 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  406 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  407 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  408 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  409 + CODE_SIGN_IDENTITY = "-";
  410 + COPY_PHASE_STRIP = NO;
  411 + DEBUG_INFORMATION_FORMAT = dwarf;
  412 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  413 + ENABLE_TESTABILITY = YES;
  414 + GCC_C_LANGUAGE_STANDARD = gnu11;
  415 + GCC_DYNAMIC_NO_PIC = NO;
  416 + GCC_NO_COMMON_BLOCKS = YES;
  417 + GCC_OPTIMIZATION_LEVEL = 0;
  418 + GCC_PREPROCESSOR_DEFINITIONS = (
  419 + "DEBUG=1",
  420 + "$(inherited)",
  421 + );
  422 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  423 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  424 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  425 + GCC_WARN_UNUSED_FUNCTION = YES;
  426 + GCC_WARN_UNUSED_VARIABLE = YES;
  427 + MACOSX_DEPLOYMENT_TARGET = 10.14;
  428 + MTL_ENABLE_DEBUG_INFO = YES;
  429 + ONLY_ACTIVE_ARCH = YES;
  430 + SDKROOT = macosx;
  431 + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
  432 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  433 + };
  434 + name = Debug;
  435 + };
  436 + 33CC10FA2044A3C60003C045 /* Release */ = {
  437 + isa = XCBuildConfiguration;
  438 + baseConfigurationReference = 7AFA3C8E1D35360C0083082E /* Release.xcconfig */;
  439 + buildSettings = {
  440 + ALWAYS_SEARCH_USER_PATHS = NO;
  441 + CLANG_ANALYZER_NONNULL = YES;
  442 + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
  443 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
  444 + CLANG_CXX_LIBRARY = "libc++";
  445 + CLANG_ENABLE_MODULES = YES;
  446 + CLANG_ENABLE_OBJC_ARC = YES;
  447 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
  448 + CLANG_WARN_BOOL_CONVERSION = YES;
  449 + CLANG_WARN_CONSTANT_CONVERSION = YES;
  450 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
  451 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
  452 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
  453 + CLANG_WARN_EMPTY_BODY = YES;
  454 + CLANG_WARN_ENUM_CONVERSION = YES;
  455 + CLANG_WARN_INFINITE_RECURSION = YES;
  456 + CLANG_WARN_INT_CONVERSION = YES;
  457 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
  458 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
  459 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
  460 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
  461 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
  462 + CODE_SIGN_IDENTITY = "-";
  463 + COPY_PHASE_STRIP = NO;
  464 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
  465 + ENABLE_NS_ASSERTIONS = NO;
  466 + ENABLE_STRICT_OBJC_MSGSEND = YES;
  467 + GCC_C_LANGUAGE_STANDARD = gnu11;
  468 + GCC_NO_COMMON_BLOCKS = YES;
  469 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
  470 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
  471 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
  472 + GCC_WARN_UNUSED_FUNCTION = YES;
  473 + GCC_WARN_UNUSED_VARIABLE = YES;
  474 + MACOSX_DEPLOYMENT_TARGET = 10.14;
  475 + MTL_ENABLE_DEBUG_INFO = NO;
  476 + SDKROOT = macosx;
  477 + SWIFT_COMPILATION_MODE = wholemodule;
  478 + SWIFT_OPTIMIZATION_LEVEL = "-O";
  479 + };
  480 + name = Release;
  481 + };
  482 + 33CC10FC2044A3C60003C045 /* Debug */ = {
  483 + isa = XCBuildConfiguration;
  484 + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
  485 + buildSettings = {
  486 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  487 + CLANG_ENABLE_MODULES = YES;
  488 + CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements;
  489 + CODE_SIGN_STYLE = Automatic;
  490 + COMBINE_HIDPI_IMAGES = YES;
  491 + INFOPLIST_FILE = Runner/Info.plist;
  492 + LD_RUNPATH_SEARCH_PATHS = (
  493 + "$(inherited)",
  494 + "@executable_path/../Frameworks",
  495 + );
  496 + PROVISIONING_PROFILE_SPECIFIER = "";
  497 + SWIFT_OPTIMIZATION_LEVEL = "-Onone";
  498 + SWIFT_VERSION = 5.0;
  499 + };
  500 + name = Debug;
  501 + };
  502 + 33CC10FD2044A3C60003C045 /* Release */ = {
  503 + isa = XCBuildConfiguration;
  504 + baseConfigurationReference = 33E5194F232828860026EE4D /* AppInfo.xcconfig */;
  505 + buildSettings = {
  506 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  507 + CLANG_ENABLE_MODULES = YES;
  508 + CODE_SIGN_ENTITLEMENTS = Runner/Release.entitlements;
  509 + CODE_SIGN_STYLE = Automatic;
  510 + COMBINE_HIDPI_IMAGES = YES;
  511 + INFOPLIST_FILE = Runner/Info.plist;
  512 + LD_RUNPATH_SEARCH_PATHS = (
  513 + "$(inherited)",
  514 + "@executable_path/../Frameworks",
  515 + );
  516 + PROVISIONING_PROFILE_SPECIFIER = "";
  517 + SWIFT_VERSION = 5.0;
  518 + };
  519 + name = Release;
  520 + };
  521 + 33CC111C2044C6BA0003C045 /* Debug */ = {
  522 + isa = XCBuildConfiguration;
  523 + buildSettings = {
  524 + CODE_SIGN_STYLE = Manual;
  525 + PRODUCT_NAME = "$(TARGET_NAME)";
  526 + };
  527 + name = Debug;
  528 + };
  529 + 33CC111D2044C6BA0003C045 /* Release */ = {
  530 + isa = XCBuildConfiguration;
  531 + buildSettings = {
  532 + CODE_SIGN_STYLE = Automatic;
  533 + PRODUCT_NAME = "$(TARGET_NAME)";
  534 + };
  535 + name = Release;
  536 + };
  537 +/* End XCBuildConfiguration section */
  538 +
  539 +/* Begin XCConfigurationList section */
  540 + 33CC10E82044A3C60003C045 /* Build configuration list for PBXProject "Runner" */ = {
  541 + isa = XCConfigurationList;
  542 + buildConfigurations = (
  543 + 33CC10F92044A3C60003C045 /* Debug */,
  544 + 33CC10FA2044A3C60003C045 /* Release */,
  545 + 338D0CE9231458BD00FA5F75 /* Profile */,
  546 + );
  547 + defaultConfigurationIsVisible = 0;
  548 + defaultConfigurationName = Release;
  549 + };
  550 + 33CC10FB2044A3C60003C045 /* Build configuration list for PBXNativeTarget "Runner" */ = {
  551 + isa = XCConfigurationList;
  552 + buildConfigurations = (
  553 + 33CC10FC2044A3C60003C045 /* Debug */,
  554 + 33CC10FD2044A3C60003C045 /* Release */,
  555 + 338D0CEA231458BD00FA5F75 /* Profile */,
  556 + );
  557 + defaultConfigurationIsVisible = 0;
  558 + defaultConfigurationName = Release;
  559 + };
  560 + 33CC111B2044C6BA0003C045 /* Build configuration list for PBXAggregateTarget "Flutter Assemble" */ = {
  561 + isa = XCConfigurationList;
  562 + buildConfigurations = (
  563 + 33CC111C2044C6BA0003C045 /* Debug */,
  564 + 33CC111D2044C6BA0003C045 /* Release */,
  565 + 338D0CEB231458BD00FA5F75 /* Profile */,
  566 + );
  567 + defaultConfigurationIsVisible = 0;
  568 + defaultConfigurationName = Release;
  569 + };
  570 +/* End XCConfigurationList section */
  571 + };
  572 + rootObject = 33CC10E52044A3C60003C045 /* Project object */;
  573 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Scheme
  3 + LastUpgradeVersion = "1300"
  4 + version = "1.3">
  5 + <BuildAction
  6 + parallelizeBuildables = "YES"
  7 + buildImplicitDependencies = "YES">
  8 + <BuildActionEntries>
  9 + <BuildActionEntry
  10 + buildForTesting = "YES"
  11 + buildForRunning = "YES"
  12 + buildForProfiling = "YES"
  13 + buildForArchiving = "YES"
  14 + buildForAnalyzing = "YES">
  15 + <BuildableReference
  16 + BuildableIdentifier = "primary"
  17 + BlueprintIdentifier = "33CC10EC2044A3C60003C045"
  18 + BuildableName = "example_nav2.app"
  19 + BlueprintName = "Runner"
  20 + ReferencedContainer = "container:Runner.xcodeproj">
  21 + </BuildableReference>
  22 + </BuildActionEntry>
  23 + </BuildActionEntries>
  24 + </BuildAction>
  25 + <TestAction
  26 + buildConfiguration = "Debug"
  27 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  28 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  29 + shouldUseLaunchSchemeArgsEnv = "YES">
  30 + <MacroExpansion>
  31 + <BuildableReference
  32 + BuildableIdentifier = "primary"
  33 + BlueprintIdentifier = "33CC10EC2044A3C60003C045"
  34 + BuildableName = "example_nav2.app"
  35 + BlueprintName = "Runner"
  36 + ReferencedContainer = "container:Runner.xcodeproj">
  37 + </BuildableReference>
  38 + </MacroExpansion>
  39 + <Testables>
  40 + </Testables>
  41 + </TestAction>
  42 + <LaunchAction
  43 + buildConfiguration = "Debug"
  44 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
  45 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
  46 + launchStyle = "0"
  47 + useCustomWorkingDirectory = "NO"
  48 + ignoresPersistentStateOnLaunch = "NO"
  49 + debugDocumentVersioning = "YES"
  50 + debugServiceExtension = "internal"
  51 + allowLocationSimulation = "YES">
  52 + <BuildableProductRunnable
  53 + runnableDebuggingMode = "0">
  54 + <BuildableReference
  55 + BuildableIdentifier = "primary"
  56 + BlueprintIdentifier = "33CC10EC2044A3C60003C045"
  57 + BuildableName = "example_nav2.app"
  58 + BlueprintName = "Runner"
  59 + ReferencedContainer = "container:Runner.xcodeproj">
  60 + </BuildableReference>
  61 + </BuildableProductRunnable>
  62 + </LaunchAction>
  63 + <ProfileAction
  64 + buildConfiguration = "Profile"
  65 + shouldUseLaunchSchemeArgsEnv = "YES"
  66 + savedToolIdentifier = ""
  67 + useCustomWorkingDirectory = "NO"
  68 + debugDocumentVersioning = "YES">
  69 + <BuildableProductRunnable
  70 + runnableDebuggingMode = "0">
  71 + <BuildableReference
  72 + BuildableIdentifier = "primary"
  73 + BlueprintIdentifier = "33CC10EC2044A3C60003C045"
  74 + BuildableName = "example_nav2.app"
  75 + BlueprintName = "Runner"
  76 + ReferencedContainer = "container:Runner.xcodeproj">
  77 + </BuildableReference>
  78 + </BuildableProductRunnable>
  79 + </ProfileAction>
  80 + <AnalyzeAction
  81 + buildConfiguration = "Debug">
  82 + </AnalyzeAction>
  83 + <ArchiveAction
  84 + buildConfiguration = "Release"
  85 + revealArchiveInOrganizer = "YES">
  86 + </ArchiveAction>
  87 +</Scheme>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<Workspace
  3 + version = "1.0">
  4 + <FileRef
  5 + location = "group:Runner.xcodeproj">
  6 + </FileRef>
  7 +</Workspace>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>IDEDidComputeMac32BitWarning</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
  1 +import Cocoa
  2 +import FlutterMacOS
  3 +
  4 +@NSApplicationMain
  5 +class AppDelegate: FlutterAppDelegate {
  6 + override func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool {
  7 + return true
  8 + }
  9 +}
  1 +{
  2 + "images" : [
  3 + {
  4 + "size" : "16x16",
  5 + "idiom" : "mac",
  6 + "filename" : "app_icon_16.png",
  7 + "scale" : "1x"
  8 + },
  9 + {
  10 + "size" : "16x16",
  11 + "idiom" : "mac",
  12 + "filename" : "app_icon_32.png",
  13 + "scale" : "2x"
  14 + },
  15 + {
  16 + "size" : "32x32",
  17 + "idiom" : "mac",
  18 + "filename" : "app_icon_32.png",
  19 + "scale" : "1x"
  20 + },
  21 + {
  22 + "size" : "32x32",
  23 + "idiom" : "mac",
  24 + "filename" : "app_icon_64.png",
  25 + "scale" : "2x"
  26 + },
  27 + {
  28 + "size" : "128x128",
  29 + "idiom" : "mac",
  30 + "filename" : "app_icon_128.png",
  31 + "scale" : "1x"
  32 + },
  33 + {
  34 + "size" : "128x128",
  35 + "idiom" : "mac",
  36 + "filename" : "app_icon_256.png",
  37 + "scale" : "2x"
  38 + },
  39 + {
  40 + "size" : "256x256",
  41 + "idiom" : "mac",
  42 + "filename" : "app_icon_256.png",
  43 + "scale" : "1x"
  44 + },
  45 + {
  46 + "size" : "256x256",
  47 + "idiom" : "mac",
  48 + "filename" : "app_icon_512.png",
  49 + "scale" : "2x"
  50 + },
  51 + {
  52 + "size" : "512x512",
  53 + "idiom" : "mac",
  54 + "filename" : "app_icon_512.png",
  55 + "scale" : "1x"
  56 + },
  57 + {
  58 + "size" : "512x512",
  59 + "idiom" : "mac",
  60 + "filename" : "app_icon_1024.png",
  61 + "scale" : "2x"
  62 + }
  63 + ],
  64 + "info" : {
  65 + "version" : 1,
  66 + "author" : "xcode"
  67 + }
  68 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
  3 + <dependencies>
  4 + <deployment identifier="macosx"/>
  5 + <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
  6 + <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
  7 + </dependencies>
  8 + <objects>
  9 + <customObject id="-2" userLabel="File's Owner" customClass="NSApplication">
  10 + <connections>
  11 + <outlet property="delegate" destination="Voe-Tx-rLC" id="GzC-gU-4Uq"/>
  12 + </connections>
  13 + </customObject>
  14 + <customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
  15 + <customObject id="-3" userLabel="Application" customClass="NSObject"/>
  16 + <customObject id="Voe-Tx-rLC" customClass="AppDelegate" customModule="Runner" customModuleProvider="target">
  17 + <connections>
  18 + <outlet property="applicationMenu" destination="uQy-DD-JDr" id="XBo-yE-nKs"/>
  19 + <outlet property="mainFlutterWindow" destination="QvC-M9-y7g" id="gIp-Ho-8D9"/>
  20 + </connections>
  21 + </customObject>
  22 + <customObject id="YLy-65-1bz" customClass="NSFontManager"/>
  23 + <menu title="Main Menu" systemMenu="main" id="AYu-sK-qS6">
  24 + <items>
  25 + <menuItem title="APP_NAME" id="1Xt-HY-uBw">
  26 + <modifierMask key="keyEquivalentModifierMask"/>
  27 + <menu key="submenu" title="APP_NAME" systemMenu="apple" id="uQy-DD-JDr">
  28 + <items>
  29 + <menuItem title="About APP_NAME" id="5kV-Vb-QxS">
  30 + <modifierMask key="keyEquivalentModifierMask"/>
  31 + <connections>
  32 + <action selector="orderFrontStandardAboutPanel:" target="-1" id="Exp-CZ-Vem"/>
  33 + </connections>
  34 + </menuItem>
  35 + <menuItem isSeparatorItem="YES" id="VOq-y0-SEH"/>
  36 + <menuItem title="Preferences…" keyEquivalent="," id="BOF-NM-1cW"/>
  37 + <menuItem isSeparatorItem="YES" id="wFC-TO-SCJ"/>
  38 + <menuItem title="Services" id="NMo-om-nkz">
  39 + <modifierMask key="keyEquivalentModifierMask"/>
  40 + <menu key="submenu" title="Services" systemMenu="services" id="hz9-B4-Xy5"/>
  41 + </menuItem>
  42 + <menuItem isSeparatorItem="YES" id="4je-JR-u6R"/>
  43 + <menuItem title="Hide APP_NAME" keyEquivalent="h" id="Olw-nP-bQN">
  44 + <connections>
  45 + <action selector="hide:" target="-1" id="PnN-Uc-m68"/>
  46 + </connections>
  47 + </menuItem>
  48 + <menuItem title="Hide Others" keyEquivalent="h" id="Vdr-fp-XzO">
  49 + <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
  50 + <connections>
  51 + <action selector="hideOtherApplications:" target="-1" id="VT4-aY-XCT"/>
  52 + </connections>
  53 + </menuItem>
  54 + <menuItem title="Show All" id="Kd2-mp-pUS">
  55 + <modifierMask key="keyEquivalentModifierMask"/>
  56 + <connections>
  57 + <action selector="unhideAllApplications:" target="-1" id="Dhg-Le-xox"/>
  58 + </connections>
  59 + </menuItem>
  60 + <menuItem isSeparatorItem="YES" id="kCx-OE-vgT"/>
  61 + <menuItem title="Quit APP_NAME" keyEquivalent="q" id="4sb-4s-VLi">
  62 + <connections>
  63 + <action selector="terminate:" target="-1" id="Te7-pn-YzF"/>
  64 + </connections>
  65 + </menuItem>
  66 + </items>
  67 + </menu>
  68 + </menuItem>
  69 + <menuItem title="Edit" id="5QF-Oa-p0T">
  70 + <modifierMask key="keyEquivalentModifierMask"/>
  71 + <menu key="submenu" title="Edit" id="W48-6f-4Dl">
  72 + <items>
  73 + <menuItem title="Undo" keyEquivalent="z" id="dRJ-4n-Yzg">
  74 + <connections>
  75 + <action selector="undo:" target="-1" id="M6e-cu-g7V"/>
  76 + </connections>
  77 + </menuItem>
  78 + <menuItem title="Redo" keyEquivalent="Z" id="6dh-zS-Vam">
  79 + <connections>
  80 + <action selector="redo:" target="-1" id="oIA-Rs-6OD"/>
  81 + </connections>
  82 + </menuItem>
  83 + <menuItem isSeparatorItem="YES" id="WRV-NI-Exz"/>
  84 + <menuItem title="Cut" keyEquivalent="x" id="uRl-iY-unG">
  85 + <connections>
  86 + <action selector="cut:" target="-1" id="YJe-68-I9s"/>
  87 + </connections>
  88 + </menuItem>
  89 + <menuItem title="Copy" keyEquivalent="c" id="x3v-GG-iWU">
  90 + <connections>
  91 + <action selector="copy:" target="-1" id="G1f-GL-Joy"/>
  92 + </connections>
  93 + </menuItem>
  94 + <menuItem title="Paste" keyEquivalent="v" id="gVA-U4-sdL">
  95 + <connections>
  96 + <action selector="paste:" target="-1" id="UvS-8e-Qdg"/>
  97 + </connections>
  98 + </menuItem>
  99 + <menuItem title="Paste and Match Style" keyEquivalent="V" id="WeT-3V-zwk">
  100 + <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
  101 + <connections>
  102 + <action selector="pasteAsPlainText:" target="-1" id="cEh-KX-wJQ"/>
  103 + </connections>
  104 + </menuItem>
  105 + <menuItem title="Delete" id="pa3-QI-u2k">
  106 + <modifierMask key="keyEquivalentModifierMask"/>
  107 + <connections>
  108 + <action selector="delete:" target="-1" id="0Mk-Ml-PaM"/>
  109 + </connections>
  110 + </menuItem>
  111 + <menuItem title="Select All" keyEquivalent="a" id="Ruw-6m-B2m">
  112 + <connections>
  113 + <action selector="selectAll:" target="-1" id="VNm-Mi-diN"/>
  114 + </connections>
  115 + </menuItem>
  116 + <menuItem isSeparatorItem="YES" id="uyl-h8-XO2"/>
  117 + <menuItem title="Find" id="4EN-yA-p0u">
  118 + <modifierMask key="keyEquivalentModifierMask"/>
  119 + <menu key="submenu" title="Find" id="1b7-l0-nxx">
  120 + <items>
  121 + <menuItem title="Find…" tag="1" keyEquivalent="f" id="Xz5-n4-O0W">
  122 + <connections>
  123 + <action selector="performFindPanelAction:" target="-1" id="cD7-Qs-BN4"/>
  124 + </connections>
  125 + </menuItem>
  126 + <menuItem title="Find and Replace…" tag="12" keyEquivalent="f" id="YEy-JH-Tfz">
  127 + <modifierMask key="keyEquivalentModifierMask" option="YES" command="YES"/>
  128 + <connections>
  129 + <action selector="performFindPanelAction:" target="-1" id="WD3-Gg-5AJ"/>
  130 + </connections>
  131 + </menuItem>
  132 + <menuItem title="Find Next" tag="2" keyEquivalent="g" id="q09-fT-Sye">
  133 + <connections>
  134 + <action selector="performFindPanelAction:" target="-1" id="NDo-RZ-v9R"/>
  135 + </connections>
  136 + </menuItem>
  137 + <menuItem title="Find Previous" tag="3" keyEquivalent="G" id="OwM-mh-QMV">
  138 + <connections>
  139 + <action selector="performFindPanelAction:" target="-1" id="HOh-sY-3ay"/>
  140 + </connections>
  141 + </menuItem>
  142 + <menuItem title="Use Selection for Find" tag="7" keyEquivalent="e" id="buJ-ug-pKt">
  143 + <connections>
  144 + <action selector="performFindPanelAction:" target="-1" id="U76-nv-p5D"/>
  145 + </connections>
  146 + </menuItem>
  147 + <menuItem title="Jump to Selection" keyEquivalent="j" id="S0p-oC-mLd">
  148 + <connections>
  149 + <action selector="centerSelectionInVisibleArea:" target="-1" id="IOG-6D-g5B"/>
  150 + </connections>
  151 + </menuItem>
  152 + </items>
  153 + </menu>
  154 + </menuItem>
  155 + <menuItem title="Spelling and Grammar" id="Dv1-io-Yv7">
  156 + <modifierMask key="keyEquivalentModifierMask"/>
  157 + <menu key="submenu" title="Spelling" id="3IN-sU-3Bg">
  158 + <items>
  159 + <menuItem title="Show Spelling and Grammar" keyEquivalent=":" id="HFo-cy-zxI">
  160 + <connections>
  161 + <action selector="showGuessPanel:" target="-1" id="vFj-Ks-hy3"/>
  162 + </connections>
  163 + </menuItem>
  164 + <menuItem title="Check Document Now" keyEquivalent=";" id="hz2-CU-CR7">
  165 + <connections>
  166 + <action selector="checkSpelling:" target="-1" id="fz7-VC-reM"/>
  167 + </connections>
  168 + </menuItem>
  169 + <menuItem isSeparatorItem="YES" id="bNw-od-mp5"/>
  170 + <menuItem title="Check Spelling While Typing" id="rbD-Rh-wIN">
  171 + <modifierMask key="keyEquivalentModifierMask"/>
  172 + <connections>
  173 + <action selector="toggleContinuousSpellChecking:" target="-1" id="7w6-Qz-0kB"/>
  174 + </connections>
  175 + </menuItem>
  176 + <menuItem title="Check Grammar With Spelling" id="mK6-2p-4JG">
  177 + <modifierMask key="keyEquivalentModifierMask"/>
  178 + <connections>
  179 + <action selector="toggleGrammarChecking:" target="-1" id="muD-Qn-j4w"/>
  180 + </connections>
  181 + </menuItem>
  182 + <menuItem title="Correct Spelling Automatically" id="78Y-hA-62v">
  183 + <modifierMask key="keyEquivalentModifierMask"/>
  184 + <connections>
  185 + <action selector="toggleAutomaticSpellingCorrection:" target="-1" id="2lM-Qi-WAP"/>
  186 + </connections>
  187 + </menuItem>
  188 + </items>
  189 + </menu>
  190 + </menuItem>
  191 + <menuItem title="Substitutions" id="9ic-FL-obx">
  192 + <modifierMask key="keyEquivalentModifierMask"/>
  193 + <menu key="submenu" title="Substitutions" id="FeM-D8-WVr">
  194 + <items>
  195 + <menuItem title="Show Substitutions" id="z6F-FW-3nz">
  196 + <modifierMask key="keyEquivalentModifierMask"/>
  197 + <connections>
  198 + <action selector="orderFrontSubstitutionsPanel:" target="-1" id="oku-mr-iSq"/>
  199 + </connections>
  200 + </menuItem>
  201 + <menuItem isSeparatorItem="YES" id="gPx-C9-uUO"/>
  202 + <menuItem title="Smart Copy/Paste" id="9yt-4B-nSM">
  203 + <modifierMask key="keyEquivalentModifierMask"/>
  204 + <connections>
  205 + <action selector="toggleSmartInsertDelete:" target="-1" id="3IJ-Se-DZD"/>
  206 + </connections>
  207 + </menuItem>
  208 + <menuItem title="Smart Quotes" id="hQb-2v-fYv">
  209 + <modifierMask key="keyEquivalentModifierMask"/>
  210 + <connections>
  211 + <action selector="toggleAutomaticQuoteSubstitution:" target="-1" id="ptq-xd-QOA"/>
  212 + </connections>
  213 + </menuItem>
  214 + <menuItem title="Smart Dashes" id="rgM-f4-ycn">
  215 + <modifierMask key="keyEquivalentModifierMask"/>
  216 + <connections>
  217 + <action selector="toggleAutomaticDashSubstitution:" target="-1" id="oCt-pO-9gS"/>
  218 + </connections>
  219 + </menuItem>
  220 + <menuItem title="Smart Links" id="cwL-P1-jid">
  221 + <modifierMask key="keyEquivalentModifierMask"/>
  222 + <connections>
  223 + <action selector="toggleAutomaticLinkDetection:" target="-1" id="Gip-E3-Fov"/>
  224 + </connections>
  225 + </menuItem>
  226 + <menuItem title="Data Detectors" id="tRr-pd-1PS">
  227 + <modifierMask key="keyEquivalentModifierMask"/>
  228 + <connections>
  229 + <action selector="toggleAutomaticDataDetection:" target="-1" id="R1I-Nq-Kbl"/>
  230 + </connections>
  231 + </menuItem>
  232 + <menuItem title="Text Replacement" id="HFQ-gK-NFA">
  233 + <modifierMask key="keyEquivalentModifierMask"/>
  234 + <connections>
  235 + <action selector="toggleAutomaticTextReplacement:" target="-1" id="DvP-Fe-Py6"/>
  236 + </connections>
  237 + </menuItem>
  238 + </items>
  239 + </menu>
  240 + </menuItem>
  241 + <menuItem title="Transformations" id="2oI-Rn-ZJC">
  242 + <modifierMask key="keyEquivalentModifierMask"/>
  243 + <menu key="submenu" title="Transformations" id="c8a-y6-VQd">
  244 + <items>
  245 + <menuItem title="Make Upper Case" id="vmV-6d-7jI">
  246 + <modifierMask key="keyEquivalentModifierMask"/>
  247 + <connections>
  248 + <action selector="uppercaseWord:" target="-1" id="sPh-Tk-edu"/>
  249 + </connections>
  250 + </menuItem>
  251 + <menuItem title="Make Lower Case" id="d9M-CD-aMd">
  252 + <modifierMask key="keyEquivalentModifierMask"/>
  253 + <connections>
  254 + <action selector="lowercaseWord:" target="-1" id="iUZ-b5-hil"/>
  255 + </connections>
  256 + </menuItem>
  257 + <menuItem title="Capitalize" id="UEZ-Bs-lqG">
  258 + <modifierMask key="keyEquivalentModifierMask"/>
  259 + <connections>
  260 + <action selector="capitalizeWord:" target="-1" id="26H-TL-nsh"/>
  261 + </connections>
  262 + </menuItem>
  263 + </items>
  264 + </menu>
  265 + </menuItem>
  266 + <menuItem title="Speech" id="xrE-MZ-jX0">
  267 + <modifierMask key="keyEquivalentModifierMask"/>
  268 + <menu key="submenu" title="Speech" id="3rS-ZA-NoH">
  269 + <items>
  270 + <menuItem title="Start Speaking" id="Ynk-f8-cLZ">
  271 + <modifierMask key="keyEquivalentModifierMask"/>
  272 + <connections>
  273 + <action selector="startSpeaking:" target="-1" id="654-Ng-kyl"/>
  274 + </connections>
  275 + </menuItem>
  276 + <menuItem title="Stop Speaking" id="Oyz-dy-DGm">
  277 + <modifierMask key="keyEquivalentModifierMask"/>
  278 + <connections>
  279 + <action selector="stopSpeaking:" target="-1" id="dX8-6p-jy9"/>
  280 + </connections>
  281 + </menuItem>
  282 + </items>
  283 + </menu>
  284 + </menuItem>
  285 + </items>
  286 + </menu>
  287 + </menuItem>
  288 + <menuItem title="View" id="H8h-7b-M4v">
  289 + <modifierMask key="keyEquivalentModifierMask"/>
  290 + <menu key="submenu" title="View" id="HyV-fh-RgO">
  291 + <items>
  292 + <menuItem title="Enter Full Screen" keyEquivalent="f" id="4J7-dP-txa">
  293 + <modifierMask key="keyEquivalentModifierMask" control="YES" command="YES"/>
  294 + <connections>
  295 + <action selector="toggleFullScreen:" target="-1" id="dU3-MA-1Rq"/>
  296 + </connections>
  297 + </menuItem>
  298 + </items>
  299 + </menu>
  300 + </menuItem>
  301 + <menuItem title="Window" id="aUF-d1-5bR">
  302 + <modifierMask key="keyEquivalentModifierMask"/>
  303 + <menu key="submenu" title="Window" systemMenu="window" id="Td7-aD-5lo">
  304 + <items>
  305 + <menuItem title="Minimize" keyEquivalent="m" id="OY7-WF-poV">
  306 + <connections>
  307 + <action selector="performMiniaturize:" target="-1" id="VwT-WD-YPe"/>
  308 + </connections>
  309 + </menuItem>
  310 + <menuItem title="Zoom" id="R4o-n2-Eq4">
  311 + <modifierMask key="keyEquivalentModifierMask"/>
  312 + <connections>
  313 + <action selector="performZoom:" target="-1" id="DIl-cC-cCs"/>
  314 + </connections>
  315 + </menuItem>
  316 + <menuItem isSeparatorItem="YES" id="eu3-7i-yIM"/>
  317 + <menuItem title="Bring All to Front" id="LE2-aR-0XJ">
  318 + <modifierMask key="keyEquivalentModifierMask"/>
  319 + <connections>
  320 + <action selector="arrangeInFront:" target="-1" id="DRN-fu-gQh"/>
  321 + </connections>
  322 + </menuItem>
  323 + </items>
  324 + </menu>
  325 + </menuItem>
  326 + <menuItem title="Help" id="EPT-qC-fAb">
  327 + <modifierMask key="keyEquivalentModifierMask"/>
  328 + <menu key="submenu" title="Help" systemMenu="help" id="rJ0-wn-3NY"/>
  329 + </menuItem>
  330 + </items>
  331 + <point key="canvasLocation" x="142" y="-258"/>
  332 + </menu>
  333 + <window title="APP_NAME" allowsToolTipsWhenApplicationIsInactive="NO" autorecalculatesKeyViewLoop="NO" releasedWhenClosed="NO" animationBehavior="default" id="QvC-M9-y7g" customClass="MainFlutterWindow" customModule="Runner" customModuleProvider="target">
  334 + <windowStyleMask key="styleMask" titled="YES" closable="YES" miniaturizable="YES" resizable="YES"/>
  335 + <rect key="contentRect" x="335" y="390" width="800" height="600"/>
  336 + <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1577"/>
  337 + <view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ">
  338 + <rect key="frame" x="0.0" y="0.0" width="800" height="600"/>
  339 + <autoresizingMask key="autoresizingMask"/>
  340 + </view>
  341 + </window>
  342 + </objects>
  343 +</document>
  1 +// Application-level settings for the Runner target.
  2 +//
  3 +// This may be replaced with something auto-generated from metadata (e.g., pubspec.yaml) in the
  4 +// future. If not, the values below would default to using the project name when this becomes a
  5 +// 'flutter create' template.
  6 +
  7 +// The application's name. By default this is also the title of the Flutter window.
  8 +PRODUCT_NAME = example_nav2
  9 +
  10 +// The application's bundle identifier
  11 +PRODUCT_BUNDLE_IDENTIFIER = com.get.exampleNav2
  12 +
  13 +// The copyright displayed in application information
  14 +PRODUCT_COPYRIGHT = Copyright © 2023 com.get. All rights reserved.
  1 +#include "../../Flutter/Flutter-Debug.xcconfig"
  2 +#include "Warnings.xcconfig"
  1 +#include "../../Flutter/Flutter-Release.xcconfig"
  2 +#include "Warnings.xcconfig"
  1 +WARNING_CFLAGS = -Wall -Wconditional-uninitialized -Wnullable-to-nonnull-conversion -Wmissing-method-return-type -Woverlength-strings
  2 +GCC_WARN_UNDECLARED_SELECTOR = YES
  3 +CLANG_UNDEFINED_BEHAVIOR_SANITIZER_NULLABILITY = YES
  4 +CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE
  5 +CLANG_WARN__DUPLICATE_METHOD_MATCH = YES
  6 +CLANG_WARN_PRAGMA_PACK = YES
  7 +CLANG_WARN_STRICT_PROTOTYPES = YES
  8 +CLANG_WARN_COMMA = YES
  9 +GCC_WARN_STRICT_SELECTOR_MATCH = YES
  10 +CLANG_WARN_OBJC_REPEATED_USE_OF_WEAK = YES
  11 +CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES
  12 +GCC_WARN_SHADOW = YES
  13 +CLANG_WARN_UNREACHABLE_CODE = YES
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>com.apple.security.app-sandbox</key>
  6 + <true/>
  7 + <key>com.apple.security.cs.allow-jit</key>
  8 + <true/>
  9 + <key>com.apple.security.network.server</key>
  10 + <true/>
  11 +</dict>
  12 +</plist>
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>CFBundleDevelopmentRegion</key>
  6 + <string>$(DEVELOPMENT_LANGUAGE)</string>
  7 + <key>CFBundleExecutable</key>
  8 + <string>$(EXECUTABLE_NAME)</string>
  9 + <key>CFBundleIconFile</key>
  10 + <string></string>
  11 + <key>CFBundleIdentifier</key>
  12 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
  13 + <key>CFBundleInfoDictionaryVersion</key>
  14 + <string>6.0</string>
  15 + <key>CFBundleName</key>
  16 + <string>$(PRODUCT_NAME)</string>
  17 + <key>CFBundlePackageType</key>
  18 + <string>APPL</string>
  19 + <key>CFBundleShortVersionString</key>
  20 + <string>$(FLUTTER_BUILD_NAME)</string>
  21 + <key>CFBundleVersion</key>
  22 + <string>$(FLUTTER_BUILD_NUMBER)</string>
  23 + <key>LSMinimumSystemVersion</key>
  24 + <string>$(MACOSX_DEPLOYMENT_TARGET)</string>
  25 + <key>NSHumanReadableCopyright</key>
  26 + <string>$(PRODUCT_COPYRIGHT)</string>
  27 + <key>NSMainNibFile</key>
  28 + <string>MainMenu</string>
  29 + <key>NSPrincipalClass</key>
  30 + <string>NSApplication</string>
  31 +</dict>
  32 +</plist>
  1 +import Cocoa
  2 +import FlutterMacOS
  3 +
  4 +class MainFlutterWindow: NSWindow {
  5 + override func awakeFromNib() {
  6 + let flutterViewController = FlutterViewController.init()
  7 + let windowFrame = self.frame
  8 + self.contentViewController = flutterViewController
  9 + self.setFrame(windowFrame, display: true)
  10 +
  11 + RegisterGeneratedPlugins(registry: flutterViewController)
  12 +
  13 + super.awakeFromNib()
  14 + }
  15 +}
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
  3 +<plist version="1.0">
  4 +<dict>
  5 + <key>com.apple.security.app-sandbox</key>
  6 + <true/>
  7 +</dict>
  8 +</plist>
@@ -3,7 +3,7 @@ version: 1.0.0+1 @@ -3,7 +3,7 @@ version: 1.0.0+1
3 publish_to: none 3 publish_to: none
4 description: A new Flutter project. 4 description: A new Flutter project.
5 environment: 5 environment:
6 - sdk: ">=2.17.0 <3.0.0" 6 + sdk: ">=2.19.2 <3.0.0"
7 7
8 dependencies: 8 dependencies:
9 cupertino_icons: ^1.0.2 9 cupertino_icons: ^1.0.2
@@ -12,7 +12,7 @@ dependencies: @@ -12,7 +12,7 @@ dependencies:
12 path: ../ 12 path: ../
13 flutter: 13 flutter:
14 sdk: flutter 14 sdk: flutter
15 - flutter_lints: ^1.0.4 15 + flutter_lints: ^2.0.1
16 16
17 dev_dependencies: 17 dev_dependencies:
18 flutter_test: 18 flutter_test:
  1 +// This is a basic Flutter widget test.
  2 +//
  3 +// To perform an interaction with a widget in your test, use the WidgetTester
  4 +// utility in the flutter_test package. For example, you can send tap and scroll
  5 +// gestures. You can also use WidgetTester to find child widgets in the widget
  6 +// tree, read text, and verify that the values of widget properties are correct.
  7 +
  8 +import 'package:flutter/material.dart';
  9 +import 'package:flutter_test/flutter_test.dart';
  10 +
  11 +void main() {
  12 + testWidgets('Counter increments smoke test', (WidgetTester tester) async {
  13 + // Build our app and trigger a frame.
  14 + // await tester.pumpWidget(const MyApp());
  15 +
  16 + // Verify that our counter starts at 0.
  17 + expect(find.text('0'), findsOneWidget);
  18 + expect(find.text('1'), findsNothing);
  19 +
  20 + // Tap the '+' icon and trigger a frame.
  21 + await tester.tap(find.byIcon(Icons.add));
  22 + await tester.pump();
  23 +
  24 + // Verify that our counter has incremented.
  25 + expect(find.text('0'), findsNothing);
  26 + expect(find.text('1'), findsOneWidget);
  27 + });
  28 +}
@@ -105,10 +105,10 @@ extension GetStringUtils on String { @@ -105,10 +105,10 @@ extension GetStringUtils on String {
105 GetUtils.isCaseInsensitiveContainsAny(this, b); 105 GetUtils.isCaseInsensitiveContainsAny(this, b);
106 106
107 /// capitalize the String 107 /// capitalize the String
108 - String? get capitalize => GetUtils.capitalize(this); 108 + String get capitalize => GetUtils.capitalize(this);
109 109
110 /// Capitalize the first letter of the String 110 /// Capitalize the first letter of the String
111 - String? get capitalizeFirst => GetUtils.capitalizeFirst(this); 111 + String get capitalizeFirst => GetUtils.capitalizeFirst(this);
112 112
113 /// remove all whitespace from the String 113 /// remove all whitespace from the String
114 String get removeAllWhitespace => GetUtils.removeAllWhitespace(this); 114 String get removeAllWhitespace => GetUtils.removeAllWhitespace(this);
@@ -499,16 +499,14 @@ class GetUtils { @@ -499,16 +499,14 @@ class GetUtils {
499 499
500 /// Capitalize each word inside string 500 /// Capitalize each word inside string
501 /// Example: your name => Your Name, your name => Your name 501 /// Example: your name => Your Name, your name => Your name
502 - static String? capitalize(String value) {  
503 - if (isNull(value)) return null; 502 + static String capitalize(String value) {
504 if (isBlank(value)!) return value; 503 if (isBlank(value)!) return value;
505 return value.split(' ').map(capitalizeFirst).join(' '); 504 return value.split(' ').map(capitalizeFirst).join(' ');
506 } 505 }
507 506
508 /// Uppercase first letter inside string and let the others lowercase 507 /// Uppercase first letter inside string and let the others lowercase
509 /// Example: your name => Your name 508 /// Example: your name => Your name
510 - static String? capitalizeFirst(String s) {  
511 - if (isNull(s)) return null; 509 + static String capitalizeFirst(String s) {
512 if (isBlank(s)!) return s; 510 if (isBlank(s)!) return s;
513 return s[0].toUpperCase() + s.substring(1).toLowerCase(); 511 return s[0].toUpperCase() + s.substring(1).toLowerCase();
514 } 512 }
@@ -15,7 +15,7 @@ dependencies: @@ -15,7 +15,7 @@ dependencies:
15 dev_dependencies: 15 dev_dependencies:
16 flutter_test: 16 flutter_test:
17 sdk: flutter 17 sdk: flutter
18 - flutter_lints: ^2.0.1 18 + flutter_lints: ^2.0.2
19 19
20 20
21 # For information on the generic Dart part of this file, see the 21 # For information on the generic Dart part of this file, see the
@@ -725,7 +725,6 @@ void main() { @@ -725,7 +725,6 @@ void main() {
725 expect('foo bar'.capitalizeFirst, 'Foo bar'); 725 expect('foo bar'.capitalizeFirst, 'Foo bar');
726 expect('FoO bAr'.capitalizeFirst, 'Foo bar'); 726 expect('FoO bAr'.capitalizeFirst, 'Foo bar');
727 expect('FOO BAR'.capitalizeFirst, 'Foo bar'); 727 expect('FOO BAR'.capitalizeFirst, 'Foo bar');
728 - // expect(null.capitalizeFirst, null);  
729 expect(''.capitalizeFirst, ''); 728 expect(''.capitalizeFirst, '');
730 }); 729 });
731 730