// Copyright 2021 The Flutter team. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show SystemUiOverlayStyle; import 'package:linting_tool/layout/adaptive.dart'; import 'package:linting_tool/model/profile.dart'; import 'package:linting_tool/widgets/lint_expansion_tile.dart'; class DefaultRulesPage extends StatelessWidget { final RulesProfile profile; const DefaultRulesPage({ required this.profile, super.key, }); @override Widget build(BuildContext context) { final isDesktop = isDisplayLarge(context); final isTablet = isDisplayMedium(context); final textTheme = Theme.of(context).textTheme; final startPadding = isTablet ? 60.0 : isDesktop ? 120.0 : 16.0; final endPadding = isTablet ? 60.0 : isDesktop ? 120.0 : 16.0; return Scaffold( appBar: AppBar( title: Text( profile.name, style: textTheme.titleSmall!.copyWith( color: textTheme.bodyLarge!.color, ), ), leading: Padding( padding: const EdgeInsets.only(left: 80.0), child: TextButton.icon( onPressed: () { Navigator.pop(context); }, icon: const Icon(Icons.arrow_back_ios_new), label: const Text('Back'), ), ), leadingWidth: 160.0, toolbarHeight: 38.0, backgroundColor: Colors.white, systemOverlayStyle: SystemUiOverlayStyle.dark, ), body: ListView.separated( padding: EdgeInsetsDirectional.only( start: startPadding, end: endPadding, top: isDesktop ? 28 : 16, bottom: isDesktop ? kToolbarHeight : 16, ), itemCount: profile.rules.length, cacheExtent: 5, itemBuilder: (context, index) { return LintExpansionTile( rule: profile.rules[index], ); }, separatorBuilder: (context, index) => const SizedBox(height: 4), ), ); } }