547 lines
22 KiB
Dart
547 lines
22 KiB
Dart
|
// // import 'package:flutter/material.dart';
|
||
|
|
||
|
// // class MyHomePage11 extends StatelessWidget {
|
||
|
// // @override
|
||
|
// // Widget build(BuildContext context) {
|
||
|
// // return MaterialApp(
|
||
|
// // title: 'Dynamic App Bar',
|
||
|
// // theme: ThemeData(
|
||
|
// // primarySwatch: Colors.blue,
|
||
|
// // ),
|
||
|
// // home: DynamicAppBar(),
|
||
|
// // );
|
||
|
// // }
|
||
|
// // }
|
||
|
|
||
|
// // class DynamicAppBar extends StatefulWidget {
|
||
|
// // @override
|
||
|
// // _DynamicAppBarState createState() => _DynamicAppBarState();
|
||
|
// // }
|
||
|
|
||
|
// // class _DynamicAppBarState extends State<DynamicAppBar> {
|
||
|
// // final ScrollController _scrollController = ScrollController();
|
||
|
// // double _listHeight = 0.0; // Variable to store list height
|
||
|
|
||
|
// // @override
|
||
|
// // void initState() {
|
||
|
// // super.initState();
|
||
|
|
||
|
// // _scrollController.addListener(() {
|
||
|
// // // Check if the list has changed and update the height if necessary
|
||
|
// // if (_scrollController.hasClients) {
|
||
|
// // // Trigger rebuild to recalculate height
|
||
|
// // WidgetsBinding.instance?.addPostFrameCallback((_) {
|
||
|
// // final double newHeight = _scrollController.position.maxScrollExtent;
|
||
|
// // if (newHeight != _listHeight) {
|
||
|
// // setState(() {
|
||
|
// // _listHeight = newHeight;
|
||
|
// // });
|
||
|
// // }
|
||
|
// // });
|
||
|
// // }
|
||
|
// // });
|
||
|
// // }
|
||
|
|
||
|
// // @override
|
||
|
// // Widget build(BuildContext context) {
|
||
|
// // final double appBarHeight = 250.0; // Default height for the app bar
|
||
|
// // final double adjustedHeight = _listHeight > 500.0
|
||
|
// // ? appBarHeight
|
||
|
// // : appBarHeight - 50.0; // Adjust height based on list size
|
||
|
|
||
|
// // return Scaffold(
|
||
|
// // body: CustomScrollView(
|
||
|
// // controller: _scrollController,
|
||
|
// // slivers: <Widget>[
|
||
|
// // SliverAppBar(
|
||
|
// // expandedHeight: adjustedHeight,
|
||
|
// // flexibleSpace: FlexibleSpaceBar(
|
||
|
// // centerTitle: true,
|
||
|
// // collapseMode: CollapseMode.parallax,
|
||
|
// // title: Text(
|
||
|
// // 'Dynamic App Bar',
|
||
|
// // style: TextStyle(
|
||
|
// // color: Colors.white,
|
||
|
// // fontSize:
|
||
|
// // MediaQuery.of(context).size.width < 600 ? 16.0 : 22.0,
|
||
|
// // ),
|
||
|
// // ),
|
||
|
// // background: ColoredBox(
|
||
|
// // color: const Color.fromARGB(255, 246, 248, 252),
|
||
|
// // child: Column(
|
||
|
// // mainAxisAlignment: MainAxisAlignment.center,
|
||
|
// // children: [
|
||
|
// // Padding(
|
||
|
// // padding: EdgeInsets.all(8.0),
|
||
|
// // child: Icon(
|
||
|
// // Icons.person,
|
||
|
// // size: MediaQuery.of(context).size.width < 600 ? 48 : 72,
|
||
|
// // color: Colors.grey,
|
||
|
// // ),
|
||
|
// // ),
|
||
|
// // Text(
|
||
|
// // 'Dr. John Doe',
|
||
|
// // style: TextStyle(
|
||
|
// // fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// // ? 20.0
|
||
|
// // : 28.0,
|
||
|
// // fontWeight: FontWeight.bold,
|
||
|
// // color: Colors.black,
|
||
|
// // ),
|
||
|
// // ),
|
||
|
// // SizedBox(height: 8.0),
|
||
|
// // Text(
|
||
|
// // 'Specialist',
|
||
|
// // style: TextStyle(
|
||
|
// // fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// // ? 14.0
|
||
|
// // : 18.0,
|
||
|
// // color: Colors.black,
|
||
|
// // ),
|
||
|
// // ),
|
||
|
// // ],
|
||
|
// // ),
|
||
|
// // ),
|
||
|
// // ),
|
||
|
// // floating: false,
|
||
|
// // pinned: true,
|
||
|
// // snap: false,
|
||
|
// // ),
|
||
|
// // SliverList(
|
||
|
// // delegate: SliverChildBuilderDelegate(
|
||
|
// // (BuildContext context, int index) {
|
||
|
// // return ListTile(
|
||
|
// // title: Text('Item #$index'),
|
||
|
// // );
|
||
|
// // },
|
||
|
// // //childCount: 50, // Number of items in the list
|
||
|
// // ),
|
||
|
// // ),
|
||
|
// // ],
|
||
|
// // ),
|
||
|
// // );
|
||
|
// // }
|
||
|
// // }
|
||
|
|
||
|
// import 'package:flutter/material.dart';
|
||
|
|
||
|
// class MyHomePage11 extends StatefulWidget {
|
||
|
// @override
|
||
|
// _MyHomePageState createState() => _MyHomePageState();
|
||
|
// }
|
||
|
|
||
|
// class _MyHomePageState extends State<MyHomePage11>
|
||
|
// with SingleTickerProviderStateMixin {
|
||
|
// late TabController _tabController;
|
||
|
// final ScrollController _scrollController = ScrollController();
|
||
|
// final double adjustedHeight = 250.0; // Adjust as needed
|
||
|
|
||
|
// @override
|
||
|
// void initState() {
|
||
|
// super.initState();
|
||
|
// _tabController = TabController(length: 3, vsync: this);
|
||
|
// }
|
||
|
|
||
|
// @override
|
||
|
// void dispose() {
|
||
|
// _tabController.dispose();
|
||
|
// super.dispose();
|
||
|
// }
|
||
|
|
||
|
// @override
|
||
|
// Widget build(BuildContext context) {
|
||
|
// return Scaffold(
|
||
|
// body: CustomScrollView(
|
||
|
// controller: _scrollController,
|
||
|
// slivers: <Widget>[
|
||
|
// SliverAppBar(
|
||
|
// automaticallyImplyLeading: false,
|
||
|
// expandedHeight: adjustedHeight,
|
||
|
// flexibleSpace: FlexibleSpaceBar(
|
||
|
// centerTitle: true,
|
||
|
// collapseMode: CollapseMode.parallax,
|
||
|
// title: Text(
|
||
|
// 'Dynamic App Bar',
|
||
|
// style: TextStyle(
|
||
|
// color: Colors.white,
|
||
|
// fontSize:
|
||
|
// MediaQuery.of(context).size.width < 600 ? 16.0 : 22.0,
|
||
|
// ),
|
||
|
// ),
|
||
|
// background: ColoredBox(
|
||
|
// color: const Color.fromARGB(255, 246, 248, 252),
|
||
|
// child: Column(
|
||
|
// mainAxisAlignment: MainAxisAlignment.center,
|
||
|
// children: [
|
||
|
// Padding(
|
||
|
// padding: EdgeInsets.all(8.0),
|
||
|
// child: Icon(
|
||
|
// Icons.person,
|
||
|
// size: MediaQuery.of(context).size.width < 600 ? 48 : 72,
|
||
|
// color: Colors.grey,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Dr. John Doe',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 20.0
|
||
|
// : 28.0,
|
||
|
// fontWeight: FontWeight.bold,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// SizedBox(height: 8.0),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// Text(
|
||
|
// 'Specialist',
|
||
|
// style: TextStyle(
|
||
|
// fontSize: MediaQuery.of(context).size.width < 600
|
||
|
// ? 14.0
|
||
|
// : 18.0,
|
||
|
// color: Colors.black,
|
||
|
// ),
|
||
|
// ),
|
||
|
// ],
|
||
|
// ),
|
||
|
// ),
|
||
|
// ),
|
||
|
// floating: false,
|
||
|
// pinned: true,
|
||
|
// snap: false,
|
||
|
// bottom: TabBar(
|
||
|
// controller: _tabController,
|
||
|
// tabs: [
|
||
|
// Tab(text: 'Tab 1'),
|
||
|
// Tab(text: 'Tab 2'),
|
||
|
// Tab(text: 'Tab 3'),
|
||
|
// ],
|
||
|
// ),
|
||
|
// ),
|
||
|
// SliverFillRemaining(
|
||
|
// child: TabBarView(
|
||
|
// controller: _tabController,
|
||
|
// children: [
|
||
|
// ListView.builder(
|
||
|
// itemCount: 50,
|
||
|
// itemBuilder: (context, index) {
|
||
|
// return ListTile(
|
||
|
// title: Text('Item #$index in Tab 1'),
|
||
|
// );
|
||
|
// },
|
||
|
// ),
|
||
|
// ListView.builder(
|
||
|
// itemCount: 50,
|
||
|
// itemBuilder: (context, index) {
|
||
|
// return ListTile(
|
||
|
// title: Text('Item #$index in Tab 2'),
|
||
|
// );
|
||
|
// },
|
||
|
// ),
|
||
|
// ListView.builder(
|
||
|
// itemCount: 50,
|
||
|
// itemBuilder: (context, index) {
|
||
|
// return ListTile(
|
||
|
// title: Text('Item #$index in Tab 3'),
|
||
|
// );
|
||
|
// },
|
||
|
// ),
|
||
|
// ],
|
||
|
// ),
|
||
|
// ),
|
||
|
// ],
|
||
|
// ),
|
||
|
// );
|
||
|
// }
|
||
|
// }
|
||
|
import 'package:flutter/material.dart';
|
||
|
import 'package:flutter_carousel_widget/flutter_carousel_widget.dart'; // Make sure you have this package
|
||
|
|
||
|
class Constants {
|
||
|
static const cardtext = Colors.blue; // Example color
|
||
|
static const cardtextdark = Colors.black; // Example color
|
||
|
static const k2color1 = Colors.blue; // Example color
|
||
|
}
|
||
|
|
||
|
class MyCarousel extends StatelessWidget {
|
||
|
@override
|
||
|
Widget build(BuildContext context) {
|
||
|
// Define different gradients
|
||
|
final List<Gradient> gradients = [
|
||
|
LinearGradient(colors: [Colors.red, Colors.orange]),
|
||
|
LinearGradient(colors: [Colors.green, Colors.yellow]),
|
||
|
LinearGradient(colors: [Colors.blue, Colors.purple]),
|
||
|
LinearGradient(colors: [Colors.pink, Colors.redAccent]),
|
||
|
LinearGradient(colors: [Colors.teal, Colors.blueAccent]),
|
||
|
];
|
||
|
|
||
|
return Directionality(
|
||
|
textDirection: TextDirection.ltr,
|
||
|
child: SizedBox(
|
||
|
// height: MediaQuery.sizeOf(context).height * 0.21,
|
||
|
child: ExpandableCarousel(
|
||
|
options: CarouselOptions(
|
||
|
slideIndicator: CircularWaveSlideIndicator(
|
||
|
alignment: Alignment.bottomCenter,
|
||
|
currentIndicatorColor: Constants.k2color1,
|
||
|
indicatorBackgroundColor: Colors.grey),
|
||
|
autoPlay: true,
|
||
|
autoPlayInterval: const Duration(seconds: 2),
|
||
|
),
|
||
|
items: [1, 2, 3, 4, 5].asMap().entries.map((entry) {
|
||
|
int index = entry.key;
|
||
|
return Builder(
|
||
|
builder: (BuildContext context) {
|
||
|
return Center(
|
||
|
child: Padding(
|
||
|
padding: const EdgeInsets.all(8.0),
|
||
|
child: Flexible(
|
||
|
child: Card(
|
||
|
margin: EdgeInsets.all(1.0),
|
||
|
shape: RoundedRectangleBorder(
|
||
|
borderRadius: BorderRadius.circular(10),
|
||
|
),
|
||
|
child: Container(
|
||
|
decoration: BoxDecoration(
|
||
|
gradient: gradients[
|
||
|
index % gradients.length], // Apply gradient
|
||
|
borderRadius: BorderRadius.circular(10),
|
||
|
),
|
||
|
child: Padding(
|
||
|
padding: EdgeInsets.all(10.0),
|
||
|
child: Column(
|
||
|
mainAxisSize: MainAxisSize.min,
|
||
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||
|
children: [
|
||
|
const Text(
|
||
|
"Top Event Topics",
|
||
|
style: TextStyle(
|
||
|
fontSize: 16.0,
|
||
|
fontWeight: FontWeight.bold),
|
||
|
),
|
||
|
const SizedBox(
|
||
|
height: 10.0,
|
||
|
),
|
||
|
Row(
|
||
|
children: [
|
||
|
Container(
|
||
|
decoration: BoxDecoration(
|
||
|
color: Constants.cardtext,
|
||
|
borderRadius: BorderRadius.circular(10),
|
||
|
),
|
||
|
child: Padding(
|
||
|
padding: const EdgeInsets.all(5.0),
|
||
|
child: Row(
|
||
|
children: [
|
||
|
Text("Angina Pectoris"),
|
||
|
SizedBox(width: 5.0),
|
||
|
Container(
|
||
|
decoration: BoxDecoration(
|
||
|
color: Constants.cardtextdark,
|
||
|
borderRadius:
|
||
|
BorderRadius.circular(5),
|
||
|
),
|
||
|
child: Padding(
|
||
|
padding:
|
||
|
const EdgeInsets.all(1.0),
|
||
|
child: Text(
|
||
|
"378",
|
||
|
style: TextStyle(
|
||
|
color: Colors.white),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
SizedBox(height: 5),
|
||
|
Row(
|
||
|
children: [
|
||
|
Container(
|
||
|
decoration: BoxDecoration(
|
||
|
color: Constants.cardtext,
|
||
|
borderRadius: BorderRadius.circular(5),
|
||
|
),
|
||
|
child: Padding(
|
||
|
padding: const EdgeInsets.all(5.0),
|
||
|
child: Row(
|
||
|
children: [
|
||
|
Text("Coronary Artery Disease",
|
||
|
softWrap: true),
|
||
|
SizedBox(width: 5.0),
|
||
|
Container(
|
||
|
decoration: BoxDecoration(
|
||
|
color: Constants.cardtextdark,
|
||
|
borderRadius:
|
||
|
BorderRadius.circular(5),
|
||
|
),
|
||
|
child: Padding(
|
||
|
padding:
|
||
|
const EdgeInsets.all(1.0),
|
||
|
child: Text(
|
||
|
"378",
|
||
|
style: TextStyle(
|
||
|
color: Colors.white),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
SizedBox(height: 5),
|
||
|
Row(
|
||
|
children: [
|
||
|
Container(
|
||
|
decoration: BoxDecoration(
|
||
|
color: Constants.cardtext,
|
||
|
borderRadius: BorderRadius.circular(5),
|
||
|
),
|
||
|
child: Padding(
|
||
|
padding: const EdgeInsets.all(5.0),
|
||
|
child: Row(
|
||
|
children: [
|
||
|
Text("Hypertension"),
|
||
|
SizedBox(width: 5.0),
|
||
|
Container(
|
||
|
decoration: BoxDecoration(
|
||
|
color: Constants.cardtextdark,
|
||
|
borderRadius:
|
||
|
BorderRadius.circular(5),
|
||
|
),
|
||
|
child: Padding(
|
||
|
padding:
|
||
|
const EdgeInsets.all(1.0),
|
||
|
child: Text(
|
||
|
"378",
|
||
|
style: TextStyle(
|
||
|
color: Colors.white),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
],
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
},
|
||
|
);
|
||
|
}).toList(),
|
||
|
),
|
||
|
),
|
||
|
);
|
||
|
}
|
||
|
}
|