feat(crud)!: make crudbuilder integration more easy by integrating blocbuilder (closes #181)
continuous-integration/drone/pr Build is failing
continuous-integration/drone/pr Build is failing
This commit is contained in:
@@ -35,91 +35,81 @@ class AdvancedCubitView extends StatelessWidget {
|
||||
create: (context) =>
|
||||
UserAdvancedCubit(context.read<CrudRepository<User>>())
|
||||
..streaming(),
|
||||
child: Builder(builder: (context) {
|
||||
return Column(
|
||||
children: [
|
||||
BlocBuilder<UserAdvancedCubit, CrudState>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudReading) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
builder: (context, state) {
|
||||
return Expanded(
|
||||
child: CrudBuilder.typed<CrudListLoaded<User?>>(
|
||||
state: state,
|
||||
builder: ((context, state) {
|
||||
return ListView.builder(
|
||||
itemCount: state.data.length,
|
||||
itemBuilder: (context, index) {
|
||||
final user = state.data.elementAt(index);
|
||||
return ListTile(
|
||||
title: Text(user?.name ?? 'Error'),
|
||||
subtitle: Text(user?.email ?? 'Error'),
|
||||
onTap: () {
|
||||
context
|
||||
.read<UserAdvancedCubit>()
|
||||
.delete((user?.id)!);
|
||||
},
|
||||
onLongPress: () {
|
||||
context.read<UserAdvancedCubit>().update(
|
||||
UpdateParameters(
|
||||
id: user?.id ?? '',
|
||||
raw: {
|
||||
'email': '${user?.id}@updated.io',
|
||||
}),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
);
|
||||
}),
|
||||
initialBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
loadingBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
errorBuilder: (context, state) => Text("Error: $state"),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
final r = Random().nextInt(1000);
|
||||
context.read<UserAdvancedCubit>().create(
|
||||
User(
|
||||
id: '$r',
|
||||
name: 'Wyatt $r',
|
||||
email: '$r@wyattapp.io',
|
||||
phone: '06$r',
|
||||
),
|
||||
child: Builder(
|
||||
builder: (context) {
|
||||
return Column(
|
||||
children: [
|
||||
Expanded(
|
||||
child:
|
||||
CrudBuilder.typed<UserAdvancedCubit, CrudListLoaded<User?>>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudReading) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
builder: ((context, state) {
|
||||
return ListView.builder(
|
||||
itemCount: state.data.length,
|
||||
itemBuilder: (context, index) {
|
||||
final user = state.data.elementAt(index);
|
||||
return ListTile(
|
||||
title: Text(user?.name ?? 'Error'),
|
||||
subtitle: Text(user?.email ?? 'Error'),
|
||||
onTap: () {
|
||||
context.read<UserAdvancedCubit>().delete((user?.id)!);
|
||||
},
|
||||
onLongPress: () {
|
||||
context.read<UserAdvancedCubit>().update(
|
||||
UpdateParameters(id: user?.id ?? '', raw: {
|
||||
'email': '${user?.id}@updated.io',
|
||||
}),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
child: BlocBuilder<UserAdvancedCubit, CrudState>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudCreating) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
builder: (context, state) {
|
||||
return state is CrudCreating
|
||||
? const SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.white,
|
||||
),
|
||||
)
|
||||
: const Text("Create");
|
||||
},
|
||||
}),
|
||||
initialBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
loadingBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
errorBuilder: (context, state) => Text("Error: $state"),
|
||||
),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}),
|
||||
const SizedBox(height: 20),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
final r = Random().nextInt(1000);
|
||||
context.read<UserAdvancedCubit>().create(
|
||||
User(
|
||||
id: '$r',
|
||||
name: 'Wyatt $r',
|
||||
email: '$r@wyattapp.io',
|
||||
phone: '06$r',
|
||||
),
|
||||
);
|
||||
},
|
||||
child: CrudBuilder.onLoading<UserAdvancedCubit>(
|
||||
builder: (context, state) {
|
||||
if (state is CrudCreating) {
|
||||
return const SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.white,
|
||||
),
|
||||
);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
otherBuilder: (context, state) => const Text("Create"),
|
||||
),
|
||||
),
|
||||
],
|
||||
);
|
||||
}
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -37,51 +37,44 @@ class BasicCubitView extends StatelessWidget {
|
||||
child: Builder(builder: (context) {
|
||||
return Column(
|
||||
children: [
|
||||
BlocBuilder<UserCubit, CrudState>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudReading) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
builder: (context, state) {
|
||||
return Expanded(
|
||||
child: CrudBuilder.typed<CrudListLoaded<User?>>(
|
||||
state: state,
|
||||
builder: ((context, state) {
|
||||
return ListView.builder(
|
||||
itemCount: state.data.length,
|
||||
itemBuilder: (context, index) {
|
||||
final user = state.data.elementAt(index);
|
||||
return ListTile(
|
||||
title: Text(user?.name ?? 'Error'),
|
||||
subtitle: Text(user?.email ?? 'Error'),
|
||||
onTap: () {
|
||||
context
|
||||
.read<UserCubit>()
|
||||
.delete(id: (user?.id)!);
|
||||
},
|
||||
onLongPress: () {
|
||||
context.read<UserCubit>().update(
|
||||
single: UpdateParameters(
|
||||
id: user?.id ?? '',
|
||||
raw: {
|
||||
'email': '${user?.id}@updated.io',
|
||||
}),
|
||||
);
|
||||
},
|
||||
);
|
||||
Expanded(
|
||||
child: CrudBuilder.typed<UserCubit, CrudListLoaded<User?>>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudReading) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
builder: ((context, state) {
|
||||
return ListView.builder(
|
||||
itemCount: state.data.length,
|
||||
itemBuilder: (context, index) {
|
||||
final user = state.data.elementAt(index);
|
||||
return ListTile(
|
||||
title: Text(user?.name ?? 'Error'),
|
||||
subtitle: Text(user?.email ?? 'Error'),
|
||||
onTap: () {
|
||||
context.read<UserCubit>().delete(id: (user?.id)!);
|
||||
},
|
||||
onLongPress: () {
|
||||
context.read<UserCubit>().update(
|
||||
single: UpdateParameters(
|
||||
id: user?.id ?? '',
|
||||
raw: {
|
||||
'email': '${user?.id}@updated.io',
|
||||
}),
|
||||
);
|
||||
},
|
||||
);
|
||||
}),
|
||||
initialBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
loadingBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
errorBuilder: (context, state) => Text("Error: $state"),
|
||||
),
|
||||
);
|
||||
},
|
||||
},
|
||||
);
|
||||
}),
|
||||
initialBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
loadingBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
errorBuilder: (context, state) => Text("Error: $state"),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
ElevatedButton(
|
||||
@@ -96,48 +89,40 @@ class BasicCubitView extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
},
|
||||
child: BlocBuilder<UserCubit, CrudState>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudCreating) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
child: CrudBuilder.onLoading<UserCubit>(
|
||||
builder: (context, state) {
|
||||
return state is CrudCreating
|
||||
? const SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.white,
|
||||
),
|
||||
)
|
||||
: const Text("Create");
|
||||
if (state is CrudCreating) {
|
||||
return const SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.white,
|
||||
),
|
||||
);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
otherBuilder: (context, state) => const Text("Create"),
|
||||
),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () {
|
||||
context.read<UserCubit>().read();
|
||||
},
|
||||
child: BlocBuilder<UserCubit, CrudState>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudReading) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
child: CrudBuilder.onLoading<UserCubit>(
|
||||
builder: (context, state) {
|
||||
return state is CrudReading
|
||||
? const SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.white,
|
||||
),
|
||||
)
|
||||
: const Text("Read");
|
||||
if (state is CrudReading) {
|
||||
return const SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.white,
|
||||
),
|
||||
);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
otherBuilder: (context, state) => const Text("Read"),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
|
||||
@@ -37,51 +37,47 @@ class StreamingCubitView extends StatelessWidget {
|
||||
child: Builder(builder: (context) {
|
||||
return Column(
|
||||
children: [
|
||||
BlocBuilder<UserStreamingCubit, CrudState>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudReading) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
builder: (context, state) {
|
||||
return Expanded(
|
||||
child: CrudBuilder.typed<CrudListLoaded<User?>>(
|
||||
state: state,
|
||||
builder: ((context, state) {
|
||||
return ListView.builder(
|
||||
itemCount: state.data.length,
|
||||
itemBuilder: (context, index) {
|
||||
final user = state.data.elementAt(index);
|
||||
return ListTile(
|
||||
title: Text(user?.name ?? 'Error'),
|
||||
subtitle: Text(user?.email ?? 'Error'),
|
||||
onTap: () {
|
||||
context
|
||||
.read<UserStreamingCubit>()
|
||||
.delete(id: (user?.id)!);
|
||||
},
|
||||
onLongPress: () {
|
||||
context.read<UserStreamingCubit>().update(
|
||||
single: UpdateParameters(
|
||||
id: user?.id ?? '',
|
||||
raw: {
|
||||
'email': '${user?.id}@updated.io',
|
||||
}),
|
||||
);
|
||||
},
|
||||
);
|
||||
Expanded(
|
||||
child: CrudBuilder.typed<UserStreamingCubit,
|
||||
CrudListLoaded<User?>>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudReading) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
builder: ((context, state) {
|
||||
return ListView.builder(
|
||||
itemCount: state.data.length,
|
||||
itemBuilder: (context, index) {
|
||||
final user = state.data.elementAt(index);
|
||||
return ListTile(
|
||||
title: Text(user?.name ?? 'Error'),
|
||||
subtitle: Text(user?.email ?? 'Error'),
|
||||
onTap: () {
|
||||
context
|
||||
.read<UserStreamingCubit>()
|
||||
.delete(id: (user?.id)!);
|
||||
},
|
||||
onLongPress: () {
|
||||
context.read<UserStreamingCubit>().update(
|
||||
single: UpdateParameters(
|
||||
id: user?.id ?? '',
|
||||
raw: {
|
||||
'email': '${user?.id}@updated.io',
|
||||
}),
|
||||
);
|
||||
},
|
||||
);
|
||||
}),
|
||||
initialBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
loadingBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
errorBuilder: (context, state) => Text("Error: $state"),
|
||||
),
|
||||
);
|
||||
},
|
||||
},
|
||||
);
|
||||
}),
|
||||
initialBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
loadingBuilder: (context, state) =>
|
||||
const Center(child: CircularProgressIndicator()),
|
||||
errorBuilder: (context, state) => Text("Error: $state"),
|
||||
),
|
||||
),
|
||||
const SizedBox(height: 20),
|
||||
ElevatedButton(
|
||||
@@ -96,24 +92,20 @@ class StreamingCubitView extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
},
|
||||
child: BlocBuilder<UserStreamingCubit, CrudState>(
|
||||
buildWhen: (previous, current) {
|
||||
if (current is CrudLoading && current is! CrudCreating) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
},
|
||||
child: CrudBuilder.onLoading<UserStreamingCubit>(
|
||||
builder: (context, state) {
|
||||
return state is CrudCreating
|
||||
? const SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.white,
|
||||
),
|
||||
)
|
||||
: const Text("Create");
|
||||
if (state is CrudCreating) {
|
||||
return const SizedBox(
|
||||
width: 20,
|
||||
height: 20,
|
||||
child: CircularProgressIndicator(
|
||||
color: Colors.white,
|
||||
),
|
||||
);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
otherBuilder: (context, state) => const Text("Create"),
|
||||
),
|
||||
),
|
||||
],
|
||||
|
||||
Reference in New Issue
Block a user