Search
Duplicate

share_plus

share_plus

share_plus ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

share_plus๋ž€ ๋ฌด์—‡์ธ๊ฐ€

์•ฑ์—์„œ ๊ณต์œ  ๋ฒ„ํŠผ ๋ˆŒ๋ €์„ ๋•Œ ๋œจ๋Š” ๊ณต์œ  ๋ฉ”๋‰ด ๊ธฐ๋Šฅ
์˜ˆ:
โ€ข
๋‰ด์Šค ์•ฑ โ†’ ๊ธฐ์‚ฌ ๊ณต์œ 
โ€ข
๊ฐค๋Ÿฌ๋ฆฌ ์•ฑ โ†’ ์‚ฌ์ง„ ๊ณต์œ 
โ€ข
๋ฉ”๋ชจ ์•ฑ โ†’ ํ…์ŠคํŠธ ๊ณต์œ 
โ€ข
ํŒŒ์ผ ์•ฑ โ†’ ํŒŒ์ผ ๊ณต์œ 
๊ฑฐ์˜ ๋ชจ๋“  ์•ฑ์— ๋“ค์–ด๊ฐ€๋Š” ๊ธฐ๋Šฅ

์„ค์น˜ ๋ฐฉ๋ฒ•

dependencies: share_plus: ^7.0.0
YAML
๋ณต์‚ฌ
flutter pub get
Bash
๋ณต์‚ฌ
import 'package:share_plus/share_plus.dart';
Dart
๋ณต์‚ฌ

๊ธฐ๋ณธ ํ…์ŠคํŠธ ๊ณต์œ 

Share.share('์•ˆ๋…•ํ•˜์„ธ์š” Flutter ๊ณต์œ  ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.');
Dart
๋ณต์‚ฌ
๋ฒ„ํŠผ ์˜ˆ์ œ:
ElevatedButton( onPressed: () { Share.share('Flutter ์•ฑ ๊ณต์œ ํ•˜๊ธฐ'); }, child: Text("๊ณต์œ ํ•˜๊ธฐ"), )
Dart
๋ณต์‚ฌ

๋งํฌ ๊ณต์œ 

Share.share('https://flutter.dev');
Dart
๋ณต์‚ฌ
์›น์‚ฌ์ดํŠธ ๊ณต์œ , ์•ฑ ๋‹ค์šด๋กœ๋“œ ๋งํฌ ๊ณต์œ  ๋“ฑ์— ์‚ฌ์šฉ

์ œ๋ชฉ + ํ…์ŠคํŠธ ๊ณต์œ 

Share.share( 'Flutter ๊ณต์œ  ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค', subject: '๊ณต์œ  ์ œ๋ชฉ', );
Dart
๋ณต์‚ฌ
์ด๋ฉ”์ผ ๊ณต์œ  ์‹œ ์ œ๋ชฉ์œผ๋กœ ๋“ค์–ด๊ฐ

์ด๋ฏธ์ง€ ๊ณต์œ  (์ค‘์š” )

final box = context.findRenderObject() as RenderBox; Share.shareXFiles( [XFile('/storage/emulated/0/Download/image.png')], text: '์ด๋ฏธ์ง€ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค', sharePositionOrigin: box.localToGlobal(Offset.zero) & box.size, );
Dart
๋ณต์‚ฌ
๊ฐค๋Ÿฌ๋ฆฌ ์•ฑ, ์นด๋ฉ”๋ผ ์•ฑ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ

์—ฌ๋Ÿฌ ํŒŒ์ผ ๊ณต์œ 

Share.shareXFiles([ XFile(path1), XFile(path2), ]);
Dart
๋ณต์‚ฌ
์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€ / ํŒŒ์ผ ๋™์‹œ์— ๊ณต์œ  ๊ฐ€๋Šฅ

ํŒŒ์ผ + ํ…์ŠคํŠธ ๊ฐ™์ด ๊ณต์œ 

Share.shareXFiles( [XFile(filePath)], text: 'ํŒŒ์ผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค', );
Dart
๋ณต์‚ฌ

์ „์ฒด ์˜ˆ์ œ

class ShareExample extends StatelessWidget { const ShareExample({super.key}); Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text("Share Plus ์˜ˆ์ œ")), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ ElevatedButton( onPressed: () { Share.share("ํ…์ŠคํŠธ ๊ณต์œ  ํ…Œ์ŠคํŠธ"); }, child: Text("ํ…์ŠคํŠธ ๊ณต์œ "), ), ElevatedButton( onPressed: () { Share.share("https://flutter.dev"); }, child: Text("๋งํฌ ๊ณต์œ "), ), ], ), ), ); } }
Dart
๋ณต์‚ฌ

์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์•ฑ ๊ธฐ๋Šฅ ์˜ˆ์‹œ

์•ฑ
๊ณต์œ  ๋‚ด์šฉ
๊ฐค๋Ÿฌ๋ฆฌ ์•ฑ
์ด๋ฏธ์ง€
๋ฉ”๋ชจ ์•ฑ
ํ…์ŠคํŠธ
๋‰ด์Šค ์•ฑ
๊ธฐ์‚ฌ ๋งํฌ
์‡ผํ•‘ ์•ฑ
์ƒํ’ˆ ๋งํฌ
ํŒŒ์ผ ์•ฑ
ํŒŒ์ผ
์ผ์ • ์•ฑ
์ผ์ • ์ •๋ณด
๊ฑฐ์˜ ๋ชจ๋“  ์•ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋Šฅ

๋‹ค๋ฅธ Flutter ์ €์žฅ/๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ์กฐํ•ฉ

๊ธฐ๋Šฅ
๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์ด๋ฏธ์ง€ ์„ ํƒ
image_picker
ํŒŒ์ผ ์„ ํƒ
file_picker
ํŒŒ์ผ ์ €์žฅ
path_provider
DB ์ €์žฅ
sqflite
๊ณต์œ 
share_plus
๊ฐ™์ด ๋งŽ์ด ์‚ฌ์šฉ๋จ

์˜ˆ์‹œ ์•ฑ ๊ตฌ์กฐ

์‚ฌ์ง„ ์„ ํƒ โ†’ ํŒŒ์ผ ์ €์žฅ โ†’ DB ์ €์žฅ โ†’ ๋ชฉ๋ก ํ‘œ์‹œ โ†’ ๊ณต์œ  ๋ฒ„ํŠผ โ†’ share_plus
Plain Text
๋ณต์‚ฌ
๊ฐค๋Ÿฌ๋ฆฌ ์•ฑ / ๋ฉ”๋ชจ ์•ฑ / ํŒŒ์ผ ์•ฑ ํ”„๋กœ์ ํŠธ ๊ฐ€๋Šฅ

์‹ค๋ฌด ํŒ

๊ณต์œ  ๋ฒ„ํŠผ ์œ„์น˜

๋ณดํ†ต ์—ฌ๊ธฐ ์œ„์น˜์— ์žˆ์Œ
โ€ข
AppBar ์˜ค๋ฅธ์ชฝ ์•„์ด์ฝ˜
โ€ข
์ƒ์„ธ ํŽ˜์ด์ง€ ์ƒ๋‹จ
โ€ข
์ด๋ฏธ์ง€ ๋ณด๊ธฐ ํ™”๋ฉด
โ€ข
๋ฆฌ์ŠคํŠธ ์•„์ดํ…œ ๋ฉ”๋‰ด
IconButton( icon: Icon(Icons.share), onPressed: () { Share.share("๊ณต์œ  ๋‚ด์šฉ"); }, )
Dart
๋ณต์‚ฌ

ํ•œ์ค„ ์ •๋ฆฌ

share_plus = Flutter ์•ฑ์—์„œ ํ…์ŠคํŠธ, ์ด๋ฏธ์ง€, ํŒŒ์ผ์„ ๋‹ค๋ฅธ ์•ฑ์œผ๋กœ ๋ณด๋‚ด๋Š” ๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
์›ํ•˜๋ฉด Flutter์—์„œ ๋งŽ์ด ์“ฐ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๊ฐ•์˜๋…ธํŠธ ์‹œ๋ฆฌ์ฆˆ๋„ ์ •๋ฆฌํ•ด์ค„๊ฒŒ:
โ€ข
image_picker
โ€ข
file_picker
โ€ข
path_provider
โ€ข
sqflite
โ€ข
hive
โ€ข
shared_preferences
โ€ข
flutter_slidable
โ€ข
table_calendar