16 changed files with 153 additions and 193 deletions
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 52 KiB |
@ -1,2 +1,3 @@ |
|||||||
https://iconduck.com/icons/94312/flutter |
https://iconduck.com/icons/94312/flutter |
||||||
https://iconduck.com/icons/54169/package |
https://iconduck.com/icons/54169/package |
||||||
|
https://iconduck.com/illustrations/108225/gingerbread-man-christmas-treat-candy-cartoon |
||||||
|
@ -0,0 +1,8 @@ |
|||||||
|
import 'package:flutter/widgets.dart'; |
||||||
|
import 'package:scoped_model/scoped_model.dart'; |
||||||
|
|
||||||
|
/// Model for [PhotoViewPage] |
||||||
|
class PhotoViewModel extends Model { |
||||||
|
/// Get [ScopedModel] |
||||||
|
static PhotoViewModel of(BuildContext context) => ScopedModel.of<PhotoViewModel>(context); |
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
import 'package:flutter_example_packages/base/package/package_page.dart'; |
||||||
|
import 'package:flutter_example_packages/packages/photo_view/page.dart'; |
||||||
|
import 'package:get_it/get_it.dart'; |
||||||
|
|
||||||
|
import 'model.dart'; |
||||||
|
|
||||||
|
/// Package values |
||||||
|
final packagePhotoView = PackagePage( |
||||||
|
key: 'photo_view', |
||||||
|
descEN: ''' |
||||||
|
A simple zoomable image/content widget for Flutter. |
||||||
|
''', |
||||||
|
descRU: ''' |
||||||
|
Простой масштабируемый виджет изображения/контента для Flutter. |
||||||
|
''', |
||||||
|
version: '0.14.0', |
||||||
|
isPlatformDependent: false, |
||||||
|
page: () => PhotoViewPage(), |
||||||
|
init: () { |
||||||
|
GetIt.instance.registerFactory<PhotoViewModel>( |
||||||
|
() => PhotoViewModel()); |
||||||
|
}, |
||||||
|
); |
@ -0,0 +1,82 @@ |
|||||||
|
import 'package:flutter/material.dart'; |
||||||
|
import 'package:flutter_example_packages/base/di/app_di.dart'; |
||||||
|
import 'package:flutter_example_packages/base/package/package.dart'; |
||||||
|
import 'package:flutter_example_packages/packages/photo_view/model.dart'; |
||||||
|
import 'package:flutter_example_packages/packages/photo_view/package.dart'; |
||||||
|
import 'package:flutter_example_packages/theme/radius.dart'; |
||||||
|
import 'package:flutter_example_packages/widgets/base/export.dart'; |
||||||
|
import 'package:flutter_example_packages/widgets/blocks/block_info_package.dart'; |
||||||
|
import 'package:flutter_example_packages/widgets/layouts/block_layout.dart'; |
||||||
|
import 'package:flutter_gen/gen_l10n/app_localizations.dart'; |
||||||
|
import 'package:photo_view/photo_view.dart'; |
||||||
|
|
||||||
|
class PhotoViewPage extends AppStatefulWidget { |
||||||
|
PhotoViewPage({ |
||||||
|
super.key, |
||||||
|
}); |
||||||
|
|
||||||
|
final Package package = packagePhotoView; |
||||||
|
|
||||||
|
@override |
||||||
|
State<PhotoViewPage> createState() => _PhotoViewPageState(); |
||||||
|
} |
||||||
|
|
||||||
|
class _PhotoViewPageState extends AppState<PhotoViewPage> { |
||||||
|
double _heightPhotoView = 1; |
||||||
|
final _keyPhotoView = GlobalKey(); |
||||||
|
|
||||||
|
@override |
||||||
|
void onDidChangeMetrics() { |
||||||
|
setState(() { |
||||||
|
_heightPhotoView = _getHeightPhotoView(); |
||||||
|
}); |
||||||
|
} |
||||||
|
|
||||||
|
@override |
||||||
|
Widget buildWide( |
||||||
|
BuildContext context, |
||||||
|
MediaQueryData media, |
||||||
|
AppLocalizations l10n, |
||||||
|
) { |
||||||
|
return BlockLayout<PhotoViewModel>( |
||||||
|
model: getIt<PhotoViewModel>(), |
||||||
|
title: widget.package.key, |
||||||
|
builder: (context, child, model) { |
||||||
|
return SingleChildScrollView( |
||||||
|
child: Padding( |
||||||
|
padding: const EdgeInsets.all(20), |
||||||
|
child: Column( |
||||||
|
crossAxisAlignment: CrossAxisAlignment.start, |
||||||
|
children: [ |
||||||
|
BlockInfoPackage(widget.package), |
||||||
|
ClipRRect( |
||||||
|
borderRadius: AppRadius.small, |
||||||
|
child: SizedBox( |
||||||
|
key: _keyPhotoView, |
||||||
|
width: double.infinity, |
||||||
|
height: _heightPhotoView, |
||||||
|
child: PhotoView( |
||||||
|
imageProvider: |
||||||
|
const AssetImage("assets/images/large_image.jpg"), |
||||||
|
), |
||||||
|
), |
||||||
|
), |
||||||
|
], |
||||||
|
), |
||||||
|
), |
||||||
|
); |
||||||
|
}, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
double _getHeightPhotoView() { |
||||||
|
if (_keyPhotoView.currentContext != null) { |
||||||
|
RenderBox? box = |
||||||
|
_keyPhotoView.currentContext?.findRenderObject() as RenderBox; |
||||||
|
Offset position = |
||||||
|
box.localToGlobal(Offset.zero); //this is global position |
||||||
|
return MediaQuery.of(context).size.height - position.dy - 20; |
||||||
|
} |
||||||
|
return 1; |
||||||
|
} |
||||||
|
} |
@ -1,99 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
|
|
||||||
# Copyright (c) 2023. Open Mobile Platform LLC. |
|
||||||
# License: Proprietary. |
|
||||||
|
|
||||||
## Build example, sign rpm, upload/install/run rpm to device |
|
||||||
|
|
||||||
## Usage |
|
||||||
## |
|
||||||
## chmod +x ./build_example.sh |
|
||||||
## |
|
||||||
## ./build_example.sh \ |
|
||||||
## -p xdga_directories \ |
|
||||||
## -d <ip>:<password> \ |
|
||||||
## -s /home/user/sign/system_keys |
|
||||||
|
|
||||||
## Flutter path |
|
||||||
FLUTTER="$HOME/.local/opt/flutter-sdk/bin/flutter" |
|
||||||
|
|
||||||
## https://developer.auroraos.ru/doc/software_development/psdk/setup |
|
||||||
## Install Platform SDK path |
|
||||||
## You may not have set the PSDK_DIR environment variable. |
|
||||||
## export PSDK_DIR=$HOME/AuroraPlatformSDK/sdks/aurora_psdk |
|
||||||
|
|
||||||
while getopts p:d:s: flag; do |
|
||||||
case "${flag}" in |
|
||||||
p) package=${OPTARG} ;; |
|
||||||
d) device=${OPTARG} ;; |
|
||||||
s) sign=${OPTARG} ;; |
|
||||||
*) |
|
||||||
echo "usage: $0 [-p] [-d] [-s]" >&2 |
|
||||||
exit 1 |
|
||||||
;; |
|
||||||
esac |
|
||||||
done |
|
||||||
|
|
||||||
if [ -z "$package" ]; then |
|
||||||
echo "Specify a build package" |
|
||||||
exit |
|
||||||
else |
|
||||||
cd "../packages/$package" 2>/dev/null || eval 'echo "Package \"$package\" not found." && exit' |
|
||||||
## Update dependency |
|
||||||
$FLUTTER pub get |
|
||||||
## Run ffigen if has |
|
||||||
$FLUTTER pub run ffigen --config ffigen.yaml 2>/dev/null |
|
||||||
## Open example dir |
|
||||||
cd "example" || exit |
|
||||||
## Build aurora example app |
|
||||||
{ |
|
||||||
$FLUTTER build aurora --release |
|
||||||
} || { |
|
||||||
exit 1; |
|
||||||
} |
|
||||||
fi |
|
||||||
|
|
||||||
if [ -n "$sign" ]; then |
|
||||||
|
|
||||||
key=$(ls "$sign"/*key.pem) |
|
||||||
|
|
||||||
if [ -z "$key" ]; then |
|
||||||
echo "Key *key.pem not found." |
|
||||||
exit |
|
||||||
fi |
|
||||||
|
|
||||||
cert=$(ls "$sign"/*cert.pem) |
|
||||||
|
|
||||||
if [ -z "$cert" ]; then |
|
||||||
echo "Key *cert.pem not found." |
|
||||||
exit |
|
||||||
fi |
|
||||||
|
|
||||||
## Sign rpm system key |
|
||||||
"$PSDK_DIR"/sdk-chroot rpmsign-external sign \ |
|
||||||
--key "$key" \ |
|
||||||
--cert "$cert" \ |
|
||||||
build/aurora/arm/release/RPMS/*.rpm |
|
||||||
fi |
|
||||||
|
|
||||||
if [ -n "$device" ]; then |
|
||||||
|
|
||||||
IFS=':' read -ra ADDR <<< "$device" |
|
||||||
IFS='/' read -ra ADDP <<< "$package" |
|
||||||
|
|
||||||
D_IP="${ADDR[0]}" |
|
||||||
D_PASS="${ADDR[1]}" |
|
||||||
APP_KEY="${ADDP[-1]}" |
|
||||||
|
|
||||||
# shellcheck disable=SC2012 |
|
||||||
rpm=$(ls "$PWD"/build/aurora/arm/release/RPMS/*.rpm | sort -r | head -n 1) |
|
||||||
|
|
||||||
# upload rpm |
|
||||||
scp "$rpm" defaultuser@"$D_IP:/home/defaultuser/Downloads" |
|
||||||
|
|
||||||
# install rpm |
|
||||||
ssh -t defaultuser@$D_IP "echo $D_PASS | devel-su pkcon -y install-local /home/defaultuser/Downloads/*$APP_KEY*.rpm" |
|
||||||
|
|
||||||
# run application |
|
||||||
ssh -t defaultuser@$D_IP "/usr/bin/com.example.${APP_KEY}_example" |
|
||||||
fi |
|
@ -1,67 +0,0 @@ |
|||||||
#!/bin/bash |
|
||||||
|
|
||||||
# Copyright (c) 2023. Open Mobile Platform LLC. |
|
||||||
# License: Proprietary. |
|
||||||
|
|
||||||
## Script create c_cpp_properties.json with dependencies for flutter aurora |
|
||||||
|
|
||||||
## Usage |
|
||||||
## |
|
||||||
## chmod +x ./vscode_properties.sh |
|
||||||
## ./vscode_properties.sh |
|
||||||
|
|
||||||
## https://developer.auroraos.ru/doc/software_development/psdk/setup |
|
||||||
## Install Platform SDK path |
|
||||||
## You may not have set the PSDK_DIR environment variable. |
|
||||||
## export PSDK_DIR=$HOME/AuroraPlatformSDK/sdks/aurora_psdk |
|
||||||
|
|
||||||
cd ../ |
|
||||||
|
|
||||||
## check file |
|
||||||
[ -f .vscode/c_cpp_properties.json ] && { echo "File c_cpp_properties.json already exist!"; exit; } |
|
||||||
|
|
||||||
## find target |
|
||||||
TARGET=$($PSDK_DIR/sdk-chroot sdk-assistant list | grep armv | grep default | sed 's/^.*A/A/g' | sed 's/\s.*//g') |
|
||||||
|
|
||||||
## mkdir .vscode if not exist |
|
||||||
[ -d .vscode ] || mkdir .vscode |
|
||||||
|
|
||||||
## find targets path |
|
||||||
TARGETS_PATH=$(cd "$PSDK_DIR/../../" && pwd)/targets |
|
||||||
|
|
||||||
## save file |
|
||||||
tee -a .vscode/c_cpp_properties.json << END |
|
||||||
{ |
|
||||||
"configurations": [ |
|
||||||
{ |
|
||||||
"name": "Linux", |
|
||||||
"includePath": [ |
|
||||||
"\${workspaceFolder}/**", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/dconf", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/flutter-embedder", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/maliit", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/appmanifest-cpp", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/glib-2.0", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/lib/glib-2.0/include", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/sailfishapp", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/qt5", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/qt5/QtConcurrent", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/qt5/QtCore", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/qt5/QtDBus", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/qt5/QtGui", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/qt5/QtMultimedia", |
|
||||||
"$TARGETS_PATH/$TARGET/usr/include/qt5/QtQuick" |
|
||||||
], |
|
||||||
"defines": [ |
|
||||||
"__ARM_PCS_VFP" |
|
||||||
], |
|
||||||
"compilerPath": "/usr/bin/g++", |
|
||||||
"cStandard": "c17", |
|
||||||
"cppStandard": "c++17", |
|
||||||
"intelliSenseMode": "clang-x64" |
|
||||||
} |
|
||||||
], |
|
||||||
"version": 4 |
|
||||||
} |
|
||||||
END |
|
Loading…
Reference in new issue