Skip to content

Instantly share code, notes, and snippets.

@Lxxyx
Created February 23, 2025 06:14
Show Gist options
  • Save Lxxyx/201186b47b216a6a4090d0c44e9367cf to your computer and use it in GitHub Desktop.
Save Lxxyx/201186b47b216a6a4090d0c44e9367cf to your computer and use it in GitHub Desktop.
import 'package:flutter/material.dart';
void main() => runApp(const MyApp());
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Web3 News',
debugShowCheckedModeBanner: false,
theme: ThemeData(
colorSchemeSeed: Colors.blue,
),
home: const NewsHomePage(),
);
}
}
class NewsHomePage extends StatefulWidget {
const NewsHomePage({super.key});
@override
State<NewsHomePage> createState() => _NewsHomePageState();
}
class _NewsHomePageState extends State<NewsHomePage> {
int _selectedCircleIndex = 0;
final List<String> _circleNames = ['DeFi', 'NFT', 'Layer2', 'DAO'];
final List<List<NewsArticle>> _newsArticles = [
[
NewsArticle(title: 'DeFi News 1', content: 'Lorem ipsum dolor sit amet'),
NewsArticle(title: 'DeFi News 2', content: 'Lorem ipsum dolor sit amet'),
NewsArticle(title: 'DeFi News 3', content: 'Lorem ipsum dolor sit amet'),
],
[
NewsArticle(title: 'NFT News 1', content: 'Lorem ipsum dolor sit amet'),
NewsArticle(title: 'NFT News 2', content: 'Lorem ipsum dolor sit amet'),
NewsArticle(title: 'NFT News 3', content: 'Lorem ipsum dolor sit amet'),
],
[
NewsArticle(title: 'Layer2 News 1', content: 'Lorem ipsum dolor sit amet'),
NewsArticle(title: 'Layer2 News 2', content: 'Lorem ipsum dolor sit amet'),
NewsArticle(title: 'Layer2 News 3', content: 'Lorem ipsum dolor sit amet'),
],
[
NewsArticle(title: 'DAO News 1', content: 'Lorem ipsum dolor sit amet'),
NewsArticle(title: 'DAO News 2', content: 'Lorem ipsum dolor sit amet'),
NewsArticle(title: 'DAO News 3', content: 'Lorem ipsum dolor sit amet'),
],
];
void _onCircleChanged(int index) {
setState(() {
_selectedCircleIndex = index;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Web3 News'),
bottom: TabBar(
isScrollable: true,
onTap: _onCircleChanged,
tabs: _circleNames.map((name) => Tab(text: name)).toList(),
),
),
body: TabBarView(
children: _newsArticles.map((articles) => NewsArticleList(articles)).toList(),
),
);
}
}
class NewsArticle {
final String title;
final String content;
NewsArticle({required this.title, required this.content});
}
class NewsArticleList extends StatelessWidget {
final List<NewsArticle> _newsArticles;
NewsArticleList(this._newsArticles);
@override
Widget build(BuildContext context) {
return ListView.builder(
itemCount: _newsArticles.length,
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text(_newsArticles[index].title),
subtitle: Text(_newsArticles[index].content),
),
);
},
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment