### Install Packages Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Command to fetch packages after updating pubspec.yaml. ```css $ flutter packages get ``` -------------------------------- ### SharedPreferences Implementation with Get Storage Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Example of implementing SharedPreferences-like functionality using Get Storage, including default values and custom boxes. ```dart class MyPref { static final _otherBox = () => GetStorage('MyPref'); final username = ''.val('username'); final age = 0.val('age'); final price = 1000.val('price', getBox: _otherBox); // or final username2 = ReadWriteValue('username', ''); final age2 = ReadWriteValue('age', 0); final price2 = ReadWriteValue('price', '', _otherBox); } void updateAge() { final age = 0.val('age'); // or final age = ReadWriteValue('age', 0, () => box); // or final age = Get.find().age; age.val = 1; // will save to box final realAge = age.val; // will read from box } ``` -------------------------------- ### CMake Installation Rules Source: https://github.com/jonataslaw/get_storage/blob/master/example/linux/CMakeLists.txt Defines the installation process for the application bundle, including cleaning the build directory, setting installation paths for data and libraries, installing the executable, Flutter ICU data, Flutter library, bundled plugin libraries, assets, and the AOT library for non-Debug builds. ```cmake # === Installation === # By default, "installing" just makes a relocatable bundle in the build # directory. set(BUILD_BUNDLE_DIR "${PROJECT_BINARY_DIR}/bundle") if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) set(CMAKE_INSTALL_PREFIX "${BUILD_BUNDLE_DIR}" CACHE PATH "..." FORCE) endif() # Start with a clean build bundle directory every time. install(CODE " file(REMOVE_RECURSE \"${BUILD_BUNDLE_DIR}/\") " COMPONENT Runtime) set(INSTALL_BUNDLE_DATA_DIR "${CMAKE_INSTALL_PREFIX}/data") set(INSTALL_BUNDLE_LIB_DIR "${CMAKE_INSTALL_PREFIX}/lib") install(TARGETS ${BINARY_NAME} RUNTIME DESTINATION "${CMAKE_INSTALL_PREFIX}" COMPONENT Runtime) install(FILES "${FLUTTER_ICU_DATA_FILE}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) install(FILES "${FLUTTER_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) if(PLUGIN_BUNDLED_LIBRARIES) install(FILES "${PLUGIN_BUNDLED_LIBRARIES}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endif() # Fully re-copy the assets directory on each build to avoid having stale files # from a previous install. set(FLUTTER_ASSET_DIR_NAME "flutter_assets") install(CODE " file(REMOVE_RECURSE \"${INSTALL_BUNDLE_DATA_DIR}/${FLUTTER_ASSET_DIR_NAME}\") " COMPONENT Runtime) install(DIRECTORY "${PROJECT_BUILD_DIR}/${FLUTTER_ASSET_DIR_NAME}" DESTINATION "${INSTALL_BUNDLE_DATA_DIR}" COMPONENT Runtime) # Install the AOT library on non-Debug builds only. if(NOT CMAKE_BUILD_TYPE MATCHES "Debug") install(FILES "${AOT_LIBRARY}" DESTINATION "${INSTALL_BUNDLE_LIB_DIR}" COMPONENT Runtime) endif() ``` -------------------------------- ### Import Get Storage Source: https://github.com/jonataslaw/get_storage/blob/master/README.md How to import the Get Storage library into your Dart code. ```dart import 'package:get_storage/get_storage.dart'; ``` -------------------------------- ### Initialize Storage Driver Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Initializes the Get Storage driver. This must be awaited before using GetStorage. ```dart main() async { await GetStorage.init(); runApp(App()); } ``` -------------------------------- ### Get Storage Instance Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Obtain an instance of GetStorage to interact with the storage. ```dart final box = GetStorage(); ``` -------------------------------- ### CMake Project Setup and Build Configuration Source: https://github.com/jonataslaw/get_storage/blob/master/example/linux/CMakeLists.txt Configures the CMake project, sets the binary name and application ID, defines build types (Debug, Profile, Release), and applies standard compilation settings like C++14 support, warning flags, optimization levels, and NDEBUG definition. ```cmake cmake_minimum_required(VERSION 3.10) project(runner LANGUAGES CXX) set(BINARY_NAME "example") set(APPLICATION_ID "com.example.example") cmake_policy(SET CMP0063 NEW) set(CMAKE_INSTALL_RPATH "$ORIGIN/lib") # Configure build options. if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Debug" CACHE STRING "Flutter build mode" FORCE) set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS "Debug" "Profile" "Release") endif() # Compilation settings that should be applied to most targets. function(APPLY_STANDARD_SETTINGS TARGET) target_compile_features(${TARGET} PUBLIC cxx_std_14) target_compile_options(${TARGET} PRIVATE -Wall -Werror) target_compile_options(${TARGET} PRIVATE "<$>:-O3>") target_compile_definitions(${TARGET} PRIVATE "<$>:NDEBUG>") endfunction() set(FLUTTER_MANAGED_DIR "${CMAKE_CURRENT_SOURCE_DIR}/flutter") # Flutter library and tool build rules. add_subdirectory(${FLUTTER_MANAGED_DIR}) # System-level dependencies. find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) add_definitions(-DAPPLICATION_ID="${APPLICATION_ID}") # Application build add_executable(${BINARY_NAME} "main.cc" "my_application.cc" "${FLUTTER_MANAGED_DIR}/generated_plugin_registrant.cc" ) apply_standard_settings(${BINARY_NAME}) target_link_libraries(${BINARY_NAME} PRIVATE flutter) target_link_libraries(${BINARY_NAME} PRIVATE PkgConfig::GTK) add_dependencies(${BINARY_NAME} flutter_assemble) # Only the install-generated bundle's copy of the executable will launch # correctly, since the resources must in the right relative locations. To avoid # people trying to run the unbundled copy, put it in a subdirectory instead of # the default top-level location. set_target_properties(${BINARY_NAME} PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/intermediates_do_not_run" ) # Generated plugin build rules, which manage building the plugins and adding # them to the application. include(flutter/generated_plugins.cmake) ``` -------------------------------- ### Create and Use Named Containers Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Demonstrates how to create and use separate storage containers with custom names. ```dart GetStorage g = GetStorage('MyStorage'); // Initialize specific container: await GetStorage.init('MyStorage'); ``` -------------------------------- ### Add Get Storage to pubspec Source: https://github.com/jonataslaw/get_storage/blob/master/README.md This snippet shows how to add the Get Storage dependency to your Flutter project's pubspec.yaml file. ```yaml dependencies: get_storage: ``` -------------------------------- ### Write Data Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Writes a key-value pair to the storage. ```dart box.write('quote', 'GetX is the best'); ``` -------------------------------- ### Listen to Key Changes Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Listens for changes to a specific key in the storage. ```dart box.listenKey('key', (value){ print('new key is $value'); }); ``` -------------------------------- ### Listen to Storage Changes Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Listens for any changes within the entire storage. Remember to dispose of the listener when no longer needed. ```dart Function? disposeListen; disposeListen = box.listen((){ print('box changed'); }); // To dispose: disposeListen?.call(); ``` -------------------------------- ### Remove Data Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Removes a key-value pair from the storage. ```dart box.remove('quote'); ``` -------------------------------- ### Erase All Data Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Removes all key-value pairs from the storage. ```dart box.erase(); ``` -------------------------------- ### Flutter Library and Dependency Setup Source: https://github.com/jonataslaw/get_storage/blob/master/example/linux/flutter/CMakeLists.txt This section configures the Flutter library integration for the Linux GTK project. It finds necessary system packages using PkgConfig, defines paths for the Flutter library and ICU data, and sets up include directories and link libraries for the Flutter interface target. ```cmake # === Flutter Library === # System-level dependencies. find_package(PkgConfig REQUIRED) pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0) pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0) pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0) pkg_check_modules(BLKID REQUIRED IMPORTED_TARGET blkid) pkg_check_modules(LZMA REQUIRED IMPORTED_TARGET liblzma) set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so") # Published to parent scope for install step. set(FLUTTER_LIBRARY ${FLUTTER_LIBRARY} PARENT_SCOPE) set(FLUTTER_ICU_DATA_FILE "${EPHEMERAL_DIR}/icudtl.dat" PARENT_SCOPE) set(PROJECT_BUILD_DIR "${PROJECT_DIR}/build/" PARENT_SCOPE) set(AOT_LIBRARY "${PROJECT_DIR}/build/lib/libapp.so" PARENT_SCOPE) list(APPEND FLUTTER_LIBRARY_HEADERS "fl_basic_message_channel.h" "fl_binary_codec.h" "fl_binary_messenger.h" "fl_dart_project.h" "fl_engine.h" "fl_json_message_codec.h" "fl_json_method_codec.h" "fl_message_codec.h" "fl_method_call.h" "fl_method_channel.h" "fl_method_codec.h" "fl_method_response.h" "fl_plugin_registrar.h" "fl_plugin_registry.h" "fl_standard_message_codec.h" "fl_standard_method_codec.h" "fl_string_codec.h" "fl_value.h" "fl_view.h" "flutter_linux.h" ) list_prepend(FLUTTER_LIBRARY_HEADERS "${EPHEMERAL_DIR}/flutter_linux/") add_library(flutter INTERFACE) target_include_directories(flutter INTERFACE "${EPHEMERAL_DIR}" ) target_link_libraries(flutter INTERFACE "${FLUTTER_LIBRARY}") target_link_libraries(flutter INTERFACE PkgConfig::GTK PkgConfig::GLIB PkgConfig::GIO PkgConfig::BLKID PkgConfig::LZMA ) add_dependencies(flutter flutter_assemble) ``` -------------------------------- ### Read Data Source: https://github.com/jonataslaw/get_storage/blob/master/README.md Reads the value associated with a given key from the storage. ```dart print(box.read('quote')); // out: GetX is the best ``` -------------------------------- ### Flutter Tool Backend Integration Source: https://github.com/jonataslaw/get_storage/blob/master/example/linux/flutter/CMakeLists.txt This snippet configures the custom command to run the Flutter tool backend script for building the Flutter library. It specifies the output files, environment variables, and the command to execute, ensuring the build process is triggered correctly. ```cmake # === Flutter tool backend === # _phony_ is a non-existent file to force this command to run every time, # since currently there's no way to get a full input/output list from the # flutter tool. add_custom_command( OUTPUT ${FLUTTER_LIBRARY} ${FLUTTER_LIBRARY_HEADERS} ${CMAKE_CURRENT_BINARY_DIR}/_phony_ COMMAND ${CMAKE_COMMAND} -E env ${FLUTTER_TOOL_ENVIRONMENT} "${FLUTTER_ROOT}/packages/flutter_tools/bin/tool_backend.sh" linux-x64 ${CMAKE_BUILD_TYPE} ) add_custom_target(flutter_assemble DEPENDS "${FLUTTER_LIBRARY}" ${FLUTTER_LIBRARY_HEADERS} ) ``` -------------------------------- ### CMake Build Configuration for Flutter Linux GTK Source: https://github.com/jonataslaw/get_storage/blob/master/example/linux/flutter/CMakeLists.txt This snippet outlines the main CMake configuration for a Flutter Linux GTK project. It sets the minimum CMake version, defines the ephemeral directory, includes generated configuration, and defines a helper function for list manipulation. ```cmake cmake_minimum_required(VERSION 3.10) set(EPHEMERAL_DIR "${CMAKE_CURRENT_SOURCE_DIR}/ephemeral") # Configuration provided via flutter tool. include(${EPHEMERAL_DIR}/generated_config.cmake) # TODO: Move the rest of this into files in ephemeral. See # https://github.com/flutter/flutter/issues/57146. # Serves the same purpose as list(TRANSFORM ... PREPEND ...), # which isn't available in 3.10. function(list_prepend LIST_NAME PREFIX) set(NEW_LIST "") foreach(element ${${LIST_NAME}}) list(APPEND NEW_LIST "${PREFIX}${element}") endforeach(element) set(${LIST_NAME} "${NEW_LIST}" PARENT_SCOPE) endfunction() ``` -------------------------------- ### Service Worker Registration Source: https://github.com/jonataslaw/get_storage/blob/master/example/web/index.html Registers the Flutter service worker if the browser supports service workers. This is typically used for Progressive Web Apps (PWAs) to enable offline functionality and background updates. ```javascript if ('serviceWorker' in navigator) { window.addEventListener('load', function () { navigator.serviceWorker.register('flutter_service_worker.js'); }); } ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.