data ලෙස පිටු, resolver හරහා UI

PageEntry තුළ metadata පමණක් තබන්න. සෑම page key එකක්ම සැබෑ widget එකකට map කිරීමට buildPage භාවිතා කරන්න.

serializable state

PageEntry සාමාන්‍ය data නිසා navigation state log, diff සහ replay කළ හැක.

සරල resolver

page.key මත switch කිරීමෙන් routing පැහැදිලි සහ review කළ හැකිව පවතී.

එකම truth source එක

Push සහ pop යනු _pages list මත කරන operations වන අතර side effects නොවේ.

Resolver pattern

page key අනුව build කර page list එක declaratively වෙනස් කරන්න.

Command

Resolver උදාහරණය

Widget _buildPage(BuildContext context, PageEntry page) {
  switch (page.key) {
    case 'home':
      return HomePage(onGoDetail: _goDetail);
    case 'detail':
      return const DetailPage();
    default:
      return const SizedBox.shrink();
  }
}

void _goDetail() {
  setState(() => _pages = [..._pages, const PageEntry(key: 'detail', name: '/detail')]);
}
metadata සැහැල්ලු ලෙස තබන්න

තැබීමෙන් වළකින්න Widget instances navigation state තුළට සහ maintainability සඳහා PageEntry එක pure metadata ලෙස තබන්න.