Skip to content

Instantly share code, notes, and snippets.

@yaizudamashii
Created August 5, 2021 19:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yaizudamashii/c911eb7b4b3e1efb9864d604c13bf773 to your computer and use it in GitHub Desktop.
Save yaizudamashii/c911eb7b4b3e1efb9864d604c13bf773 to your computer and use it in GitHub Desktop.
/*
import割愛
*/
AutoDisposeStreamProvider<RoomDetailViewModel> createUsersStreamProvider({ Room room }) {
return StreamProvider.autoDispose<RoomDetailViewModel>((ref) {
final database = ref.watch(databaseProvider);
final agora = ref.watch(agoraProvider);
final currentUserStream = ref.watch(userProvider);
if (database != null && agora != null && currentUserStream != null) {
return currentUserStream.when(
data: (User currentUser) {
return database.roomStream(agoraService: agora, room: room, currentUser: currentUser);
},
loading: () => const Stream.empty(),
error: (error, stackTrace) => const Stream.empty()
);
}
return const Stream.empty();
});
}
class RoomDetailScreen extends ConsumerWidget {
final Room room;
final AutoDisposeStreamProvider<RoomDetailViewModel> usersStreamProvider;
RoomDetailScreen({ @required this.room })
: usersStreamProvider = createUsersStreamProvider(room: room);
@override
Widget build(BuildContext context, ScopedReader watch) {
final currentUserStream = watch(userProvider);
final usersStream = watch(usersStreamProvider);
double screenWidth = MediaQuery.of(context).size.width;
int numTilesHorizontal = (screenWidth / 120).floor();
return Scaffold(
/*
中略
*/
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment