fluent_appbar 2.0.0 fluent_appbar: ^2.0.0 copied to clipboard
Fluent AppBar is a package to recreate the iOS large text title bar with a Material design
import 'package:fluent_appbar/fluent_appbar.dart';
import 'package:flutter/material.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: HomePage());
}
}
class HomePage extends StatefulWidget {
HomePage({Key? key}) : super(key: key);
@override
_HomePageState createState() => _HomePageState();
}
class _HomePageState extends State<HomePage> {
final ScrollController scrollController = ScrollController();
final List<String> entries = <String>[
'A',
'B',
'C',
'A',
'B',
'C',
'A',
'B',
'C',
'A',
'B',
'C'
];
final List<int> colorCodes = <int>[
600,
500,
100,
600,
500,
100,
600,
500,
100,
600,
500,
100
];
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(children: <Widget>[
listDemo(),
FluentAppBar(scrollController: scrollController, titleText: 'Home')
]),
);
}
Future<bool> getData() async {
await Future<dynamic>.delayed(const Duration(milliseconds: 50));
return true;
}
Widget listDemo() {
return FutureBuilder<bool>(
future: getData(),
builder: (BuildContext context, AsyncSnapshot<bool> snapshot) {
if (!snapshot.hasData) {
return const SizedBox();
} else {
return ListView.builder(
controller: scrollController,
padding: EdgeInsets.only(
top: AppBar().preferredSize.height +
MediaQuery.of(context).padding.top +
24,
bottom: 62 + MediaQuery.of(context).padding.bottom,
),
itemCount: entries.length,
scrollDirection: Axis.vertical,
itemBuilder: (BuildContext context, int index) {
//widget.animationController.forward();
return Container(
height: 80,
color: Colors.amber[colorCodes[index]],
child: Center(child: Text('Entry ${entries[index]}')),
);
},
);
}
},
);
}
}