potatos
๐•๐•’๐•ฆ๐•ฃ๐•ฆ๐•ค
potatos
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ
    • Daily
    • Study
      • CS
      • Network
      • Windows
      • Linux
      • HTML & CSS
      • JavaScript
      • React
      • vue.js
      • Flutter
      • DataBase
      • Elastic Se..
      • Log
      • Coding Tes..
    • Work
      • PC
      • Mobile
      • JPGIF

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

  • notice

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • CSS
  • ์…€๋ ‰ํ„ฐ
  • Linux
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ
  • MySQL
  • JavaScript
  • Windows
  • ์ˆ˜์ง ์ •๋ ฌ
  • HTML
  • ์œˆ๋„์šฐ

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
potatos
Study/Flutter

[Flutter] Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ - Riverpod

Study/Flutter

[Flutter] Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ - Riverpod

2025. 1. 31. 02:24

0. Riverpod๋ž€?

Flutter์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํ”„๋ ˆ์ž„์›Œํฌ ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Provider์˜ ํ•œ๊ณ„๋ฅผ ๊ฐœ์„ ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค.

๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ๋Š” ๋ฆฌ์•กํ‹ฐ๋ธŒ ์บ์‹ฑ, ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ํ”„๋ ˆ์ž„์›Œํฌ๋ผ๊ณ  ์†Œ๊ฐœ๋˜์–ด ์žˆ๋Š”๋ฐ ๋ฆฌ์•กํ‹ฐ๋ธŒ ์บ์‹ฑ๊ณผ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ์€ ๋ฌด์—‡์ผ๊นŒ?

 

  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ์บ์‹ฑ
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ๊ณ„์‚ฐํ•  ๋•Œ ์บ์‹ฑํ•˜์—ฌ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•œ ๋ชจ๋“  ๊ณณ์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ธฐ์ˆ 
  • ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ
    • UI์™€ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒฐํ•ฉํ•˜๋Š” ๊ธฐ์ˆ 
    • ๋ฐ์ดํ„ฐ์˜ ๋ณ€๊ฒฝ์— ๋”ฐ๋ผ UI๋ฅผ ์ž๋™์œผ๋กœ ๋ณ€๊ฒฝ
    • MVVM ํŒจํ„ด ๊ตฌํ˜„ ๊ฐ€๋Šฅ

 

1.  Riverpod์˜ ํŠน์ง•

  1. ์‰ฌ์šด ์ „์—ญ ์ƒํƒœ ๊ด€๋ฆฌ ๊ตฌํ˜„
    - ์ƒํƒœ๋ฅผ ์ „์—ญ์ ์œผ๋กœ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋งŒ ์ดˆ๊ธฐํ™”
    - ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ๊ฐ€ ์ž๋™์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง
  2. ์˜์กด์„ฑ ์ฃผ์ž…
    - ์ข…์†์„ฑ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ด€๋ฆฌ ๊ฐ€๋Šฅ
  3. Auto Dispose
    - ํ•„์š”ํ•˜์ง€ ์•Š์€ Provider๋“ค ์ž๋™ ์ œ๊ฑฐ
  4. ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ
    - ์ƒํƒœ ๊ด€๋ฆฌ ๋กœ์ง๊ณผ UI ๋กœ์ง ๋ถ„๋ฆฌ๋กœ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์— ์šฉ์ด
  5. ์œ ์—ฐ์„ฑ
    - ๋‹ค์–‘ํ•œ ์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ„ด ์ง€์›

 

2. Provider์˜ ์ข…๋ฅ˜

  • Provider
    • Rivderpod์˜ ๊ธฐ๋ณธ ์š”์†Œ๋กœ ๋ฐ์ดํ„ฐ ์ œ๊ณต ๋ฐ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•จ
    • ์ข…์†์„ฑ ์ฃผ์ž… ์—ญํ• 
  • StateProvider
    • ๋‹จ์ˆœํ•œ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌ
  • FutureProvider
    • ๋น„๋™๊ธฐ ์ž‘์—…์„ ๊ด€๋ฆฌ
    • Future ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
    • API ํ˜ธ์ถœ์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฟผ๋ฆฌ์™€ ๊ฐ™์€ ๋น„๋™๊ธฐ ์ž‘์—…์— ์‚ฌ์šฉ
  • StreamProvider
    • ์ŠคํŠธ๋ฆผ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌ
    • ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ
  • StateNotifierProvider
    • ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ๋ณต์žกํ•œ ๊ฒฝ์šฐ ์‚ฌ์šฉ
    • StateNotifier๋ฅผ ํ†ตํ•ด ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ „ํŒŒ

 

3. Provider์™€์˜ ์ƒํ˜ธ์ž‘์šฉ

์œ„์ ฏ์—์„œ WidgetRef ๊ฐ์ฒด๋ฅผ ์–ป๊ธฐ ์œ„ํ•ด ์ƒˆ๋กœ์šด ์œ„์ ฏ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”๋ฐ, ํ•ด๋‹น ์œ„์ ฏ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  • ConsumerWidget
    • ํ•ด๋‹น ์œ„์ ฏ์„ ์ƒ์†ํ•˜๋ฉด build ํ•จ์ˆ˜์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ›์•„ WidgetRef๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
class SearchBar extends ConsumerWidget {
  const SearchBar({Key? key}): super(key: key);

  @override
  Widget build(BuildContext context, WidgetRef ref) {
    String keyword = ref.watch(keywordProvider);
    
    ...
  }
}
  • ConsumerStateFulWidget + ConsumerState
    • ConsumerState์—์„œ๋Š” ref๊ฐ€ ์†์„ฑ์œผ๋กœ ์ •์˜๋˜์–ด WidgetRef๋ฅผ build ์™ธ์˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
class SearchBar extends ConsumerStatefulWidget {
  const SearchBar({Key? key}): super(key: key);

  @override
  ConsumerState<ConsumerStatefulWidget> createState() => _SearchBar();
}

class _SearchBar extends ConsumerState<SearchBar> {
  @override
  Widget build(BuildContext context) {
    String keyword = ref.watch(keywordProvider);
    
    ...
  }
}

 

4. ref์˜ ์ฃผ์š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

  • ref.watch
    • Provider๋ฅผ ๊ตฌ๋…ํ•ด ๋ณ€ํ™” ๋ชจ๋‹ˆํ„ฐ๋ง ๊ฐ€๋Šฅ
    • ๊ฐ’ ๋ณ€๊ฒฝ ์‹œ, ์œ„์ ฏ ์žฌ๋นŒ๋“œ ๋˜๋Š” ๊ตฌ๋… ์œ„์น˜์— ์ƒํƒœ๋ฅผ ์ „๋‹ฌ
    • ์ƒํƒœ ๋ณ€ํ™”๋ฅผ ํ™”๋ฉด์— ์ฆ‰์‹œ ๋ฐ˜์˜ํ•ด์•ผ ํ•  ๊ฒฝ์šฐ ์‚ฌ์šฉ
class ResultPage extends ConsumerStatefulWidget {
  const ResultPage({Key? key}): super(key: key);

  @override
  ConsumerState<ConsumerStatefulWidget> createState() => _ResultPage();
}

class _ResultPage extends ConsumerState<ResultPage> {
  @override
  Widget build(BuildContext context) {
    String keyword = ref.watch(keywordProvider);
    
    ...
    
    return Scaffold(
      appBar: AppBar(
        ...
        flexibleSpace: ResultSearchBar(keyword),
  }
}
  • ref.read
    • Provider์˜ ์ƒํƒœ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ๊ฐ’ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
    • ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒ๋œ ํŠธ๋ฆฌ๊ฑฐ ํ•จ์ˆ˜์—์„œ ์‚ฌ์šฉ
void _setKeyword(String keyword) {
  if (_debounce?.isActive ?? false) _debounce?.cancel();
  _debounce = Timer(const Duration(milliseconds: 400), () {
    ref.read(keywordProvider.notifier).setKeyword(keyword);
  });
}
  • ref.listen
    • watch์™€ ๋™์ผํ•˜๊ฒŒ ๋ณ€ํ™”๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋ง
    • ์œ„์ ฏ์„ rebuildํ•˜๊ฑฐ๋‚˜ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•˜์ง€ ์•Š๊ณ  ๋ณ€๊ฒฝ๋  ๋•Œ ์ •์˜ํ•œ ํ•จ์ˆ˜๋งŒ ์‹คํ–‰
    • Snackbar๋‚˜ Dialog๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉ
void _makeSnackBar(){
  ref.listen(
    keywordProvider,
    ((previousState, newState) {
      showSnackBar('new value is: $newState');
    }),
  );
}

 

5. ์ƒํƒœ ํด๋ž˜์Šค ์ •์˜

์ƒํƒœ๋กœ ์‚ฌ์šฉํ•˜๋Š” ํด๋ž˜์Šค๋Š” ๋ถˆ๋ณ€(Immutable) ํด๋ž˜์Šค์—ฌ์•ผ ํ•˜๋Š”๋ฐ, ๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  1. ๋ถˆ๋ณ€์„ฑ์œผ๋กœ ์ธํ•œ ์•ˆ์ •์ ์ธ ์ƒํƒœ ์ถ”์ 
    - ๋ถˆ๋ณ€ ๊ฐ์ฒด๋Š” ์ƒํƒœ๊ฐ€ ๋ณ€ํ•˜์ง€ ์•Š์•„ ๊ฐ์ฒด๊ฐ€ ์—…๋ฐ์ดํŠธ๋  ๋•Œ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜์–ด ์ƒํƒœ ๋ณ€ํ™”๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ถ”์ ๋  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
  2. ๋น„๋™๊ธฐ ์ž‘์—…๊ณผ์˜ ์ƒํ˜ธ์ž‘์šฉ
    - ๋น„๋™๊ธฐ ์ž‘์—…์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์ผ๊ด€์„ฑ ์œ ์ง€๊ฐ€ ํŽธํ•จ
  3. ๋ถˆ๋ณ€์„ฑ์œผ๋กœ ์ธํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”
    - ์ƒํƒœ๊ฐ€ ๋ณ€ํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ์—ฌ๋ถ€๋ฅผ ์ฐธ์กฐ ๋น„๊ต๊ฐ€ ์‰ฌ์›Œ ์„ฑ๋Šฅ์— ์œ ๋ฆฌ
  4. ๋””๋ฒ„๊น…๊ณผ ํ…Œ์ŠคํŠธ ์šฉ์ด์„ฑ
    - ๋””๋ฒ„๊น… ์‹œ ์ƒํƒœ์˜ ๋ณ€ํ™”๋ฅผ ์ถ”์ ํ•˜๊ฑฐ๋‚˜ ํ…Œ์ŠคํŠธํ•  ๊ฒฝ์šฐ ์ผ๊ด€๋œ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์‰ฌ์›€

๊ฐ„๋‹จํžˆ ๋งํ•ด์„œ ๋น„๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์˜๋„์น˜ ์•Š์€ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ๊ทธ๋Ÿฐ ์ƒํ™ฉ์„ ๋ง‰๊ณ ์ž ๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๋ถˆ๋ณ€ ํด๋ž˜์Šค ์ •์˜ ์‹œ์—๋Š” freezed๋ผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•œ๋‹ค.

 

6. ํ•„์š” ํŒจํ‚ค์ง€

Riverpod ๊ด€๋ จ

  • flutter_riverpod
    • Flutter์—์„œ Rivderpod๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€
  • riverpod_generator
    • ์ž๋™์œผ๋กœ Riverpod์˜ Provider๋ฅผ ์ •์˜ํ•˜๋Š” ํŒจํ‚ค์ง€
  • riverpod_annotation
    • riverpod_generator์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ํŒ์ •ํ•˜๋Š” ํŒจํ‚ค์ง€

๊ธฐํƒ€ ํŒจํ‚ค์ง€

  • build_runner
    • ์‹ค์ œ๋กœ ์ฝ”๋“œ๋ฅผ ์ž๋™ ์ƒ์„ฑํ•˜๋Š” ํŒจํ‚ค์ง€
  • freezed
    • ๋ถˆ๋ณ€ ํด๋ž˜์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ํŒจํ‚ค์ง€
  • freezed_annotation
    • freezed์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์–ด๋…ธํ…Œ์ด์…˜์„ ํŒ์ •ํ•˜๋Š” ํŒจํ‚ค์ง€

์ฐธ๊ณ 

  • https://riverpod.dev/ko/
 

Riverpod

์–ด๋””์„œ๋‚˜ ๊ณต์œ  ์ƒํƒœ ์„ ์–ธํ•˜๊ธฐ ๋” ์ด์ƒ main.dart๊ณผ UI ํŒŒ์ผ ์‚ฌ์ด๋ฅผ ์˜ค๊ฐˆ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๊ณต์œ  ์ƒํƒœ์˜ ์ฝ”๋“œ๋ฅผ ๋ณ„๋„์˜ ํŒจํ‚ค์ง€์— ๋„ฃ๋“ , ํ•„์š”ํ•œ ์œ„์ ฏ ๋ฐ”๋กœ ์˜†์— ๋„ฃ๋“ , ํ…Œ์ŠคํŠธ ๊ฐ€๋Šฅ์„ฑ์„ ์žƒ์ง€ ์•Š๊ณ  ์ ์ ˆ

riverpod.dev

  • https://velog.io/@udong85/Flutter-Riverpod-%EB%A1%9C-%EC%83%81%ED%83%9C-%EA%B4%80%EB%A6%AC-%ED%95%98%EA%B8%B0-2
 

[Flutter] Riverpod ์œผ๋กœ ์ƒํƒœ ๊ด€๋ฆฌ ํ•˜๊ธฐ 2

์ €๋ฒˆ ์‹œ๊ฐ„์— riverpod ์ด ๋ฌด์—‡์ด๋ฉฐ, ์™œ ์‚ฌ์šฉํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์•˜๋‹ค. riverpod ์—๋Š” provider ๋ผ๋Š” ์ค‘์š”ํ•œ ์š”์†Œ๊ฐ€ ๋“ฑ์žฅ ํ•˜๋Š”๋ฐ, ์ด๋Š” riverpod ์˜ ๋ชจํƒœ๊ฒฉ์ธ provider ๋ผ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์œ ๋ž˜๋œ

velog.io

  • https://techblog.uplus.co.kr/%ED%94%8C%EB%9F%AC%ED%84%B0-riverpod%EB%A1%9C-%EC%83%81%ED%83%9C%EA%B4%80%EB%A6%AC-%ED%95%98%EA%B8%B0-cd164f0644e5
 

ํ”Œ๋Ÿฌํ„ฐ Riverpod๋กœ ์ƒํƒœ๊ด€๋ฆฌ ํ•˜๊ธฐ

์ƒํƒœ๊ด€๋ฆฌ์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ๊ณผ Flutter์—์„œ Riverpod์„ ์‚ฌ์šฉํ•œ ์ƒํƒœ๊ด€๋ฆฌ ๊ฒฝํ—˜์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๊ณต์‹ ๋ฌธ์„œ์— ๋ณธ๋ฌธ์—์„œ๋Š” ์†Œ๊ฐœํ•˜์ง€ ์•Š์€ StreamProvider, FutureProvider ๋“ฑ์— ๋Œ€ํ•œ ์˜ˆ์‹œ๋„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

techblog.uplus.co.kr

  • https://seosh817.tistory.com/416
 

[Flutter] ์ƒํƒœ ๊ด€๋ฆฌ ํŒจํ‚ค์ง€ Riverpod ์•Œ์•„๋ณด๊ธฐ

์ด ๊ธ€์€ Riverpod 2.0 ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ๋ณด๋ฉด์„œ Riverpod์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ณ , ์™œ Riverpod์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€์— ๋Œ€ํ•ด ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ๊ฐ„๋žตํ•˜๊ฒŒ๋งŒ ๋‹ค

seosh817.tistory.com

  • https://flutterdevelop.blog/ko/riverpod_basic/#toc7
 

Riverpod๋ž€๏ผŸFlutter์˜ ๊ฐ€์žฅ ์ฃผ์š”ํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค๏ผ

์•ž์„œ ์†Œ๊ฐœํ•œ 'StatefulWidget'๋„ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค,์—ฌ๋Ÿฌ ํ™”๋ฉด๊ณผ ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์•ฑ์„ ๊ตฌํ˜„ํ•  ๊ฒฝ์šฐ, ๊ด€๋ฆฌํ•ด์•ผ ํ•  ์ƒํƒœ๋„ ๋งŽ์•„์ง€๊ณ  ๊ทธ ๊ด€๋ฆฌ๊ฐ€ ์–ด๋ ค์›Œ์ง‘๋‹ˆ๋‹ค.์ด๋Ÿฌํ•œ ์ƒํƒœ ๊ด€๋ฆฌ๋ฅผ ์‰ฝ๊ฒŒ ํ• 

flutterdevelop.blog

  • https://velog.io/@cafefarm-johnny/RiverPod
 

Riverpod

RiverPod Flutter/Dart๋ฅผ ์œ„ํ•œ ๋ฐ˜์‘ํ˜• ์บ์‹ฑ ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. RiverPod์€ ์ƒํƒœ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์ฃผ์š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Provider์˜ ํ•œ๊ณ„๋ฅผ ๊ทน๋ณตํ•˜๊ณ  ๊ฐœ์„ ๋œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค. ์„ค

velog.io

 

'Study > Flutter' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Flutter] Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ - GetX  (0) 2025.01.23
[Flutter] Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ - Provider  (0) 2025.01.17
  • 0. Riverpod๋ž€?
  • 1.  Riverpod์˜ ํŠน์ง•
  • 2. Provider์˜ ์ข…๋ฅ˜
  • 3. Provider์™€์˜ ์ƒํ˜ธ์ž‘์šฉ
  • 4. ref์˜ ์ฃผ์š” ์‚ฌ์šฉ ๋ฐฉ๋ฒ•
  • 5. ์ƒํƒœ ํด๋ž˜์Šค ์ •์˜
  • 6. ํ•„์š” ํŒจํ‚ค์ง€
  • ์ฐธ๊ณ 
'Study/Flutter' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Flutter] Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ - GetX
  • [Flutter] Flutter์˜ ์ƒํƒœ๊ด€๋ฆฌ - Provider
potatos
potatos

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.