inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[코드팩토리] [중급] Flutter 진짜 실전! 상태관리, 캐시관리, Code Generation, GoRouter, 인증로직 등 중수가 되기 위한 필수 스킬들!

텍스트필드 디자인하기

provider 관련 질문 드립니다.

176

backboss

작성한 질문수 31

0

provider 사용에 관해 질문 드립니다.

 

provider 를 같은 클래스로 여러 인스턴스를 만들어 사용할때

위젯에서 어떻게 자신이 구독중이 provider 를 찾아서 값을 바꿀수 있는가에 대해 질문 드립니다.

현재 아래와 같은 code 구성을 가지고 있습니다.

import 'package:flutter/material.dart';

import 'package:provider/provider.dart';

void main() {

runApp(

MultiProvider(

providers: [

Provider<GateWayProviderALL>(

create: (_) => GateWayProviderALL('sensor1', 1000),

),

Provider<GateWayProviderALL>(

create: (_) => GateWayProviderALL('sensor2', 1000),

),

],

child: MyApp(),

),

);

}

class MyApp extends StatelessWidget {

@override

Widget build(BuildContext context) {

return MaterialApp(

title: 'Flutter Demo',

home: MyHomePage(),

);

}

}

class MyHomePage extends StatelessWidget {

@override

Widget build(BuildContext context) {

return Scaffold(

appBar: AppBar(

title: Text('Multi Sensor Display'),

),

body: Column(

mainAxisAlignment: MainAxisAlignment.center,

children: <Widget>[

Expanded(

child: ImageCanvasConsumeGateWay('sensor1'),

),

Expanded(

child: ImageCanvasConsumeGateWay('sensor2'),

),

],

),

);

}

}

class ImageCanvasConsumeGateWay extends StatelessWidget {

final String sensorName;

ImageCanvasConsumeGateWay(this.sensorName);

@override

Widget build(BuildContext context) {

// Provider의 인스턴스를 참조하도록 수정합니다.

final provider = Provider.of<GateWayProviderALL>(context);

return Consumer<GateWayProviderALL>(

builder: (context, imageProvider, child) {

CameraImageDTO? imageDto = provider.PopCameraImageDTO(sensorName);

if (imageDto != null) {

return CustomPaint(

painter: ImagePainter(imageDto.rowImage!),

size: Size(320 / 2, 180 / 2),

);

} else {

return Center(child: CircularProgressIndicator());

}

},

);

}

}

class ImagePainter extends CustomPainter {

final ui.Image image;

ImagePainter(this.image);

@override

void paint(Canvas canvas, Size size) {

// 그리는 로직 구현

}

@override

bool shouldRepaint(covariant CustomPainter oldDelegate) => false;

}

 

 

GateWayProviderALL 을 두번 생성해서
ImageCanvasConsumeGateWay 위젯에서 자신에게 맞는 provider 를 읽어와 값을 변경해주고 싶은데

찾아보니 provider 는 데이터 형으로 provider 을 찾아 오니

클래스를 여러개 파라고 하는데 하나의 클래스에서 인스턴스를 여럿 만들어 처리할순 없나여?


flutter 하이브리드-앱

답변 1

0

코드팩토리

안녕하세요!

"provider 를 같은 클래스로 여러 인스턴스를 만들어 사용할때 위젯에서 어떻게 자신이 구독중이 provider 를 찾아서 값을 바꿀수 있는가에 대해 질문 드립니다."

불가능한걸로 알고있습니다.

감사합니다!

Isar 마지막 업데이트는 2년전입니다.

0

30

0

FlutterSecureStorage 질문

0

31

0

Dio onError Interceptor 만드는 부분에 질문이 있습니다.

0

79

2

관리자 기능에 대한 질문

0

100

2

part 'restaurant_model.g.dart';

0

92

1

36강. dio 인터셉터에 storage를 전달하는 코드가 이해 안되는데요. 도움 부탁드립니다.

0

56

2

2번 반환 상황 관련 질문

0

61

2

riverpod 3.0

0

139

2

Asset folder??

0

82

2

디자이너와 협업 시 프레임 크기 설정 관련 질문

0

113

2

FutureProvider, StateNotifierProvider 선택 기준

0

70

2

컴포넌트 모델화

0

64

2

쿼리 파라미터

0

84

2

화면 안보임

0

67

2

PaginationListView

0

54

1

강의중 37.Dio onErrorInterceptor 작업하기 dio 관련 질문입니다.

0

101

2

프로토타입이미지

0

62

2

여러 객체를 상태 관리하는 방법에 대한 질문

0

84

2

장바구니 결제하기 응답이 500이 옵니다.

0

105

2

removeFromBasket에서 await patchBasket()을 마지막에 하면 에러나는거 아닌가요?

0

67

2

이 두가지는 완전히 동일한 기능인가요?

0

106

3

내부 코드를 작성하지 않은 CursorPaginationLoading가 어떻게 로딩상태를 갖는지 잘 모르겠습니다...

0

77

2

_SplashScreenState에서 storage를 late로 호출해서 한번만 불러와도 되나요?

0

86

2

코딩 작성 순서 관련 질문

0

88

2