ResoCoder / flutter-tdd-clean-architecture-course

https://resocoder.com/flutter-clean-architecture-tdd/
1.99k stars 623 forks source link

get_it error #25

Closed akoua closed 4 years ago

akoua commented 4 years ago

I/flutter (30280): ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════ I/flutter (30280): The following assertion was thrown building Builder(dirty): I/flutter (30280): You tried to access an instance of TriviaNumberLocalDataSource that was not ready yet I/flutter (30280): 'package:get_it/get_it_impl.dart': I/flutter (30280): Failed assertion: line 272 pos 14: 'instanceFactory.isReady' I/flutter (30280): The relevant error-causing widget was: I/flutter (30280): Builder I/flutter (30280):
package:trivia_number_new/…/pages/trivia_number_page.dart:57 I/flutter (30280): When the exception was thrown, this was the stack

akoua commented 4 years ago

j'ai trouvé la solution en changeant les données dans injection_container.dart

sl.registerSingletonAsync( () async => SharedPreferences.getInstance());

sl.registerSingletonWithDependencies( () => TriviaNumberLocalDataSourceImpl(sharedPreferences: sl()), dependsOn: [SharedPreferences]);

Et dans main.dart

return FutureBuilder( future: sl.allReady(), builder: (BuildContext context, AsyncSnapshot snapshot) { if (snapshot.hasData) { return MaterialApp( title: "Number Trivia", theme: ThemeData( primaryColor: Colors.green.shade800, accentColor: Colors.green.shade600), home: TriviaNumberPage(), ); } else { return Center( child: CircularProgressIndicator(), ); } });