FlutterArtist Scalar External Shelf Event ex1
Để đơn giản hãy xem xét hình minh hoạ dưới đây:

Khi bạn cố gắng thêm, xoá hoặc sửa đổi một ItemA1 trên BlockA1 (Của ShelfA), một sự kiện sẽ được phát ra bên ngoài ShelfA và gửi tới ShelfB. Giả sử rằng ScalarB1 đã nghe được sự kiện này. Phản ứng ở mức SCALAR (Scalar-level) của ScalarB1 có thể là truy vấn lại.
Chú ý: Bạn nên xem một ví dụ cơ bản về Scalar trong bài viết dưới đây trước khi tiếp tục với bài viết này:
- FlutterArtist SingleItemBlock ex1 (***)
Kịch bản của ví dụ:
Trong ví dụ này, SystemReport24aScalar được cấu hình "phản ứng ở mức SCALAR với các sự kiện bên ngoài Shelf". Từ màn hình SystemReport24aScalar bạn gọi tới Form của SingleSupplierBlock thuộc một Shelf khác để tạo hoặc sửa đổi một Supplier. Sau khi tạo hoặc sửa đổi thành công một sự kiện sẽ được phát ra tại SingleSupplierBlock và gây ra phản ứng ở mức SCALAR (Scalar-level) tại SystemReport24aScalar kích hoạt việc truy vấn lại Scalar này.
Scalar Value
{
"categoryCount": 3,
"employeeCount": 20,
"noteCount": 8,
"productCount": 31,
"supplierCount": 4,
"saleOrderCount": 304
}
No ADS

- Download FlutterArtist Demo
2. SystemReport24aShelf
Thuộc tính ScalarConfig.onExternalShelfEvents được sử dụng để định nghĩa cách mà Scalar này phản ứng với một sự kiện xẩy ra bên ngoài Shelf.
- scalarLevelReactionOn: Định nghĩa các sự kiện nào sẽ làm cho Scalar này phản ứng ở mức Scalar, hay nói cách khác là nó sẽ được truy vấn lại (re-query).
No ADS
system_report24a_shelf.dart
class SystemReport24aShelf extends Shelf {
@override
ShelfStructure defineShelfStructure() {
return ShelfStructure(
filterModels: {},
blocks: [],
scalars: [
SystemReport24aScalar(
name: SystemReport24aScalar.scalarName,
description: null,
filterModelName: null,
config: ScalarConfig(
onExternalShelfEvents: ExternalShelfEventScalarRecipient(
scalarLevelReactionOn: [
Event(SupplierInfo), //
Event(SupplierData), //
],
),
),
),
],
);
}
SystemReport24aScalar findSystemReport24aScalar() {
return findScalar(SystemReport24aScalar.scalarName)
as SystemReport24aScalar;
}
}
- FlutterArtist Projections (***)
3. SystemReport24aScalar
system_report24a_scalar.dart
class SystemReport24aScalar extends Scalar<
SystemReportData, // VALUE
EmptyFilterInput,
EmptyFilterCriteria> {
static const scalarName = "system-report24a-scalar";
final systemReportRestProvider = SystemReportRestProvider();
SystemReport24aScalar({
required super.name,
required super.description,
required super.config,
required super.filterModelName,
}) : super(childScalars: const []);
@override
Future<ApiResult<SystemReportData>> performQuery({
required Object? parentScalarValue,
required EmptyFilterCriteria filterCriteria,
}) async {
return await systemReportRestProvider.query();
}
}4. SystemReport24aButtons
system_report24a_buttons.dart
class SystemReport24aButtons extends ScalarSectionView<SystemReport24aScalar> {
const SystemReport24aButtons({super.key, required super.scalar});
@override
Widget buildContent(BuildContext context) {
return Row(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ElevatedButton(
onPressed: () {
_onPressCreateSupplierBtn(context);
},
child: Text("Create Supplier"),
),
],
);
}
Future<void> _onPressCreateSupplierBtn(BuildContext context) async {
FlutterArtist.codeFlowLogger.addMethodCall(
ownerClassInstance: this,
currentStackTrace: StackTrace.current,
parameters: null,
);
//
Coordinator coordinator = SingleSupplierCreationCoordinator(
config: CoordinatorConfig(),
customNavigate: (BuildContext context, bool success) {
if (success) {
Scaffold.of(context).openEndDrawer();
}
},
);
await coordinator.execute(context);
}
}No ADS
FlutterArtist
- Basic concepts in Flutter Artist
- FlutterArtist Block ex1
- FlutterArtist Form ex1
- FlutterArtist FormModel.patchFormFields() Ex1
- FlutterArtist BlockQuickItemUpdateAction Ex1
- FlutterArtist BlockNumberPagination Ex1
- FlutterArtist BlockQuickMultiItemCreationAction Ex1
- FlutterArtist ListView Infinite Scroll Pagination Example
- FlutterArtist Pagination
- FlutterArtist Sort DropdownSortPanel Example
- FlutterArtist BackgroundWebDownloadAction ex1
- FlutterArtist Block External Shelf Event ex1
- FlutterArtist Master-detail Blocks ex1
- FlutterArtist Scalar ex1
- FlutterArtist Pagination Davi table Infinite Scroll Ex1
- FlutterArtist Form Parent-child MultiOptFormProp ex1
- FlutterArtist Manual Sorting ReorderableGridView Example
- FlutterArtist Manual Sorting ReorderableListView
- FlutterArtist Scalar External Shelf Event ex1
- FlutterArtist Context Provider Views
- FlutterArtist Internal Shelf Event ex1
- FlutterArtist DropdownSortPanel
Show More
