1
0
mirror of https://github.com/flutter/samples.git synced 2025-11-08 22:09:06 +00:00

Initialize Rolodex (#2569)

Creates the start of the Rolodex app.

Sets up the app with the initial routes setup. Since the native Contacts
app does not open on its home screen, and instead opens on the default
list of contacts, it felt important to set that up first. Some basic app
state management is also setup for managing contact lists across the
app.

Boilerplate visuals are setup for two of the screens. Improved fidelity
will come later.

<img width="855" alt="Screenshot 2025-01-27 at 12 09 57 PM"
src="https://github.com/user-attachments/assets/de091c7c-11ac-4350-9362-61b9c26b2aca"
/>
<img width="841" alt="Screenshot 2025-01-27 at 12 04 07 PM"
src="https://github.com/user-attachments/assets/fe822b06-a432-44cf-ab24-f3e7a88955e5"
/>
This commit is contained in:
Mitchell Goodwin
2025-01-29 13:18:46 -08:00
committed by GitHub
parent ce50aafa6b
commit d62c784789
51 changed files with 1539 additions and 0 deletions

View File

@@ -0,0 +1,67 @@
// Copyright 2018 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/cupertino.dart';
import 'package:provider/provider.dart';
import 'package:rolodex/data/contact_list.dart';
import 'contacts.dart';
class ListsPage extends StatelessWidget {
const ListsPage({super.key});
@override
Widget build(BuildContext context) {
return CupertinoPageScaffold(
backgroundColor: CupertinoColors.extraLightBackgroundGray,
child: CustomScrollView(
slivers: [
CupertinoSliverNavigationBar(
leading: CupertinoButton(
padding: EdgeInsets.zero,
onPressed: () {},
child: Text('Edit'),
),
largeTitle: Text('Lists'),
trailing: CupertinoButton(
padding: EdgeInsets.zero,
onPressed: () {},
child: Text('Add List'),
),
),
SliverFillRemaining(
child: Consumer<ContactListsModel>(
builder: (context, contactLists, child) {
return CupertinoListSection.insetGrouped(
header: Text('iPhone'),
children: [
for (ContactList contactList in contactLists.lists)
CupertinoListTile(
leading: Icon(
contactList.id == 0
? CupertinoIcons.group
: CupertinoIcons.person_2,
),
title: Text(contactList.label),
onTap:
() => Navigator.of(context).push(
CupertinoPageRoute(
title: contactList.title,
builder: (BuildContext context) {
return ContactListsPage(
listId: contactList.id,
);
},
),
),
),
],
);
},
),
),
],
),
);
}
}