Flutter ChangeNotifierProvider 빌더는 더 이상 사용되지 않습니다


12

내 main.dart 에이 코드가 있습니다.

main() {
  runApp(
    MultiProvider(
      providers: [
        ChangeNotifierProvider(builder: (context) => Auth()), // /**problem here. builder displayed with strikethrough line**/
      ],
      child: App(),
    ),
  );
}

약 2 일 전부터 내 Visual Studio 코드가이 경고를 표시합니다.

여기에 이미지 설명을 입력하십시오

그래서 ChangeNotifierProvider의 빌더 매개 변수가 더 이상 사용되지 않는 것 같습니다. 나는 모든 곳을 검색했지만이 빌더 매개 변수의 대안을 찾을 수 없습니다. 그렇다면 이러한 경고를 제거하는 방법은 무엇입니까? 아래는 flutter --versionWindows 10에서 명령을 사용하는 flutter 버전입니다.

> flutter --version
Flutter 1.9.1+hotfix.6 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 68587a0916 (3 months ago)2019-09-13 19:46:58 -0700
Engine • revision b863200c37
ToolsDart 2.5.0

도움이 필요하면 미리 감사드립니다.

답변:


31

프로 바이더 버전 3.2.0부터 "builder"는 "create"를 위해 더 이상 사용되지 않는 것으로 표시됩니다.

자세한 정보는 변경 로그 에서 찾을 수 있습니다

그렇게해야합니다 :

ChangeNotifierProvider(create: (context) => Auth())

8

create as builder로 전달할 수 있습니다.

    return Provider<MyProvider>(
        create: (context) => MyProvider(

        ),
        child: HomePage(),
    );

답변 주셔서 감사합니다. 그러나 그의 설명이 명확하기 때문에 @Nuts '답변을 선택합니다
Dika

4

"builder"대신 "create"를 사용할 수 있습니다

main() {
 runApp(
   MultiProvider(
     providers: [
       ChangeNotifierProvider(create: (context) => Auth()), // /**problem here. 
builder displayed with strikethrough line**/
     ],
     child: App(),
   ),
 );

}


답변이 기존 답변에 아무 것도 추가하지 않으므로 답변을 삭제하십시오. @Tabrizapps
Dika

1

빌더 매개 변수 대신 Product () 또는 Index에서 특정 제품 과 함께 create param을 사용할 수 있습니다 .

itemBuilder: (ctx, i) => ChangeNotifierProvider(
        create: (context) => products[i],
        child:  ProductItem(),
      ), 

또는 Value 버전으로 사용할 수 있습니다.

itemBuilder: (ctx, i) => ChangeNotifierProvider.value(
        value: products[i],
        child:  ProductItem(),
      ),
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.