init
This commit is contained in:
commit
dc7af87493
132 changed files with 5659 additions and 0 deletions
65
lib/day.dart
Normal file
65
lib/day.dart
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
const TextTheme dayText = TextTheme(
|
||||
titleLarge: TextStyle(color: Color(0xff333333)),
|
||||
bodyLarge: TextStyle(color: Color(0xff333333)),
|
||||
bodyMedium: TextStyle(color: Color(0xff333333)),
|
||||
bodySmall: TextStyle(color: Color(0xff333333)),
|
||||
displayLarge: TextStyle(color: Color(0xff333333)),
|
||||
displayMedium: TextStyle(color: Color(0xff333333)),
|
||||
displaySmall: TextStyle(color: Color(0xff333333)),
|
||||
headlineLarge: TextStyle(color: Color(0xff333333)),
|
||||
headlineMedium: TextStyle(color: Color(0xff333333)),
|
||||
headlineSmall: TextStyle(color: Color(0xff333333)),
|
||||
labelLarge: TextStyle(color: Color(0xff333333)),
|
||||
labelMedium: TextStyle(color: Color(0xff333333)),
|
||||
labelSmall: TextStyle(color: Color(0xff333333)),
|
||||
titleMedium: TextStyle(color: Color(0xff333333)),
|
||||
titleSmall: TextStyle(color: Color(0xff333333)),
|
||||
);
|
||||
|
||||
const dayTheme = {
|
||||
'root':
|
||||
TextStyle(backgroundColor: Color(0xffF6F4F1), color: Color(0xff333333)),
|
||||
'comment': TextStyle(color: Color(0xff969896)),
|
||||
'meta': TextStyle(color: Color(0xff969896)),
|
||||
'variable': TextStyle(color: Color(0xffdf5000)),
|
||||
'template-variable': TextStyle(color: Color(0xffdf5000)),
|
||||
'strong': TextStyle(color: Color(0xffdf5000)),
|
||||
'emphasis': TextStyle(color: Color(0xffdf5000)),
|
||||
'quote': TextStyle(color: Color(0xffdf5000)),
|
||||
'keyword': TextStyle(color: Color(0xffd73a49)),
|
||||
'selector-tag': TextStyle(color: Color(0xffd73a49)),
|
||||
'type': TextStyle(color: Color(0xffd73a49)),
|
||||
'literal': TextStyle(color: Color(0xff0086b3)),
|
||||
'symbol': TextStyle(color: Color(0xff0086b3)),
|
||||
'bullet': TextStyle(color: Color(0xff0086b3)),
|
||||
'attribute': TextStyle(color: Color(0xff0086b3)),
|
||||
'section': TextStyle(color: Color(0xff63a35c)),
|
||||
'name': TextStyle(color: Color(0xff63a35c)),
|
||||
'tag': TextStyle(color: Color(0xff333333)),
|
||||
'title': TextStyle(color: Color(0xff6f42c1)),
|
||||
'attr': TextStyle(color: Color(0xff6f42c1)),
|
||||
'selector-id': TextStyle(color: Color(0xff6f42c1)),
|
||||
'selector-class': TextStyle(color: Color(0xff6f42c1)),
|
||||
'selector-attr': TextStyle(color: Color(0xff6f42c1)),
|
||||
'selector-pseudo': TextStyle(color: Color(0xff6f42c1)),
|
||||
'addition':
|
||||
TextStyle(color: Color(0xff55a532), backgroundColor: Color(0xffeaffea)),
|
||||
'deletion':
|
||||
TextStyle(color: Color(0xffbd2c00), backgroundColor: Color(0xffffecec)),
|
||||
'number': TextStyle(color: Color(0xff005cc5)),
|
||||
'string': TextStyle(color: Color(0xff032f62)),
|
||||
'tag-hash': TextStyle(
|
||||
color: Colors.pinkAccent,
|
||||
fontStyle: FontStyle.italic,
|
||||
fontWeight: FontWeight.bold),
|
||||
'tag-plus': TextStyle(
|
||||
color: Colors.cyan,
|
||||
fontStyle: FontStyle.italic,
|
||||
fontWeight: FontWeight.bold),
|
||||
'tag-at': TextStyle(
|
||||
color: Colors.orange,
|
||||
fontStyle: FontStyle.italic,
|
||||
fontWeight: FontWeight.bold),
|
||||
};
|
||||
408
lib/main.dart
Normal file
408
lib/main.dart
Normal file
|
|
@ -0,0 +1,408 @@
|
|||
import 'dart:typed_data';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:device_apps/device_apps.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:google_fonts/google_fonts.dart';
|
||||
import 'day.dart';
|
||||
import 'night.dart';
|
||||
|
||||
void main() {
|
||||
runApp(MyApp());
|
||||
}
|
||||
|
||||
class AppSettings {
|
||||
bool showTags;
|
||||
bool showIcons;
|
||||
bool colorIcons; // true = color icons; false = monochrome icons
|
||||
bool darkTheme;
|
||||
bool sortAlphabetically;
|
||||
|
||||
AppSettings({
|
||||
this.showTags = true,
|
||||
this.showIcons = true,
|
||||
this.colorIcons = true,
|
||||
this.darkTheme = false,
|
||||
this.sortAlphabetically = false,
|
||||
});
|
||||
}
|
||||
|
||||
class MyApp extends StatefulWidget {
|
||||
@override
|
||||
_MyAppState createState() => _MyAppState();
|
||||
}
|
||||
|
||||
class _MyAppState extends State<MyApp> {
|
||||
AppSettings settings = AppSettings();
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_loadSettings();
|
||||
}
|
||||
|
||||
Future<void> _loadSettings() async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
setState(() {
|
||||
settings.showTags = prefs.getBool('showTags') ?? true;
|
||||
settings.showIcons = prefs.getBool('showIcons') ?? true;
|
||||
settings.colorIcons = prefs.getBool('colorIcons') ?? true;
|
||||
settings.darkTheme = prefs.getBool('darkTheme') ?? false;
|
||||
settings.sortAlphabetically = prefs.getBool('sortAlphabetically') ?? false;
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> _updateSetting(String key, bool value) async {
|
||||
SharedPreferences prefs = await SharedPreferences.getInstance();
|
||||
await prefs.setBool(key, value);
|
||||
}
|
||||
|
||||
void _updateSettings(AppSettings newSettings) {
|
||||
setState(() {
|
||||
settings = newSettings;
|
||||
});
|
||||
_updateSetting('showTags', settings.showTags);
|
||||
_updateSetting('showIcons', settings.showIcons);
|
||||
_updateSetting('colorIcons', settings.colorIcons);
|
||||
_updateSetting('darkTheme', settings.darkTheme);
|
||||
_updateSetting('sortAlphabetically', settings.sortAlphabetically);
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
title: 'Plasmoid Launcher',
|
||||
theme: ThemeData(
|
||||
brightness: Brightness.light,
|
||||
scaffoldBackgroundColor: Color(0xffF6F4F1),
|
||||
appBarTheme: AppBarTheme(backgroundColor: Color(0xffF6F4F1)),
|
||||
textTheme: GoogleFonts.ibmPlexMonoTextTheme(dayText),
|
||||
),
|
||||
darkTheme: ThemeData(
|
||||
brightness: Brightness.dark,
|
||||
scaffoldBackgroundColor: Color(0xFF121212),
|
||||
appBarTheme: AppBarTheme(backgroundColor: Color(0xFF121212)),
|
||||
textTheme: GoogleFonts.ibmPlexMonoTextTheme(nightText),
|
||||
),
|
||||
themeMode: settings.darkTheme ? ThemeMode.dark : ThemeMode.light,
|
||||
home: AppLauncherScreen(
|
||||
settings: settings,
|
||||
onSettingsChanged: _updateSettings,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class AppInfo {
|
||||
final Uint8List? icon;
|
||||
final String name;
|
||||
final String packageName;
|
||||
final List<String> tags;
|
||||
|
||||
AppInfo({
|
||||
this.icon,
|
||||
required this.name,
|
||||
required this.packageName,
|
||||
required this.tags,
|
||||
});
|
||||
}
|
||||
|
||||
class AppLauncherScreen extends StatefulWidget {
|
||||
final AppSettings settings;
|
||||
final Function(AppSettings) onSettingsChanged;
|
||||
|
||||
AppLauncherScreen({required this.settings, required this.onSettingsChanged});
|
||||
|
||||
@override
|
||||
_AppLauncherScreenState createState() => _AppLauncherScreenState();
|
||||
}
|
||||
|
||||
class _AppLauncherScreenState extends State<AppLauncherScreen> {
|
||||
final TextEditingController searchController = TextEditingController();
|
||||
List<AppInfo> apps = [];
|
||||
List<AppInfo> filteredApps = [];
|
||||
bool isLoading = true;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
_loadInstalledApps();
|
||||
searchController.addListener(_filterApps);
|
||||
}
|
||||
|
||||
Future<void> _loadInstalledApps() async {
|
||||
List<Application> installedApps = await DeviceApps.getInstalledApplications(
|
||||
includeAppIcons: true,
|
||||
onlyAppsWithLaunchIntent: true,
|
||||
);
|
||||
|
||||
List<AppInfo> loadedApps = installedApps.map((app) {
|
||||
return AppInfo(
|
||||
icon: app is ApplicationWithIcon ? app.icon : null,
|
||||
name: app.appName,
|
||||
packageName: app.packageName,
|
||||
tags: [],
|
||||
);
|
||||
}).toList();
|
||||
|
||||
setState(() {
|
||||
apps = loadedApps;
|
||||
filteredApps = apps;
|
||||
isLoading = false;
|
||||
});
|
||||
}
|
||||
|
||||
void _filterApps() {
|
||||
String query = searchController.text.toLowerCase();
|
||||
setState(() {
|
||||
filteredApps = apps.where((app) {
|
||||
bool matchesName = app.name.toLowerCase().contains(query);
|
||||
bool matchesTag = app.tags.any((tag) => tag.toLowerCase().contains(query));
|
||||
return matchesName || matchesTag;
|
||||
}).toList();
|
||||
|
||||
if (widget.settings.sortAlphabetically) {
|
||||
filteredApps.sort((a, b) => a.name.compareTo(b.name));
|
||||
}
|
||||
|
||||
if (filteredApps.length == 1 && query.isNotEmpty) {
|
||||
_launchApp(filteredApps.first);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> _launchApp(AppInfo app) async {
|
||||
bool launched = await DeviceApps.openApp(app.packageName);
|
||||
if (!launched) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Could not launch ${app.name}')),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
Future<bool> _handleDismiss(DismissDirection direction, AppInfo app) async {
|
||||
if (direction == DismissDirection.endToStart) {
|
||||
_openAppInfo(app);
|
||||
} else if (direction == DismissDirection.startToEnd) {
|
||||
_editAppTags(app);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
Future<void> _openAppInfo(AppInfo app) async {
|
||||
bool launched = await DeviceApps.openAppSettings(app.packageName);
|
||||
if (!launched) {
|
||||
ScaffoldMessenger.of(context).showSnackBar(
|
||||
SnackBar(content: Text('Could not launch ${app.name} Settings')),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
void _editAppTags(AppInfo app) {
|
||||
TextEditingController tagController = TextEditingController(text: app.tags.join(" "));
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (_) => AlertDialog(
|
||||
title: Text('Edit Tags for ${app.name}'),
|
||||
content: TextField(
|
||||
controller: tagController,
|
||||
decoration: InputDecoration(
|
||||
hintText: 'Enter tags (e.g., #general, @context, +project)',
|
||||
),
|
||||
),
|
||||
actions: [
|
||||
TextButton(
|
||||
onPressed: () {
|
||||
setState(() {
|
||||
app.tags
|
||||
..clear()
|
||||
..addAll(tagController.text.split(" ").where((t) => t.isNotEmpty));
|
||||
});
|
||||
Navigator.of(context).pop();
|
||||
_filterApps();
|
||||
},
|
||||
child: Text('Save'),
|
||||
),
|
||||
TextButton(
|
||||
onPressed: () => Navigator.of(context).pop(),
|
||||
child: Text('Cancel'),
|
||||
),
|
||||
],
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
Widget _buildAppIcon(AppInfo app) {
|
||||
Widget iconWidget;
|
||||
if (app.icon != null) {
|
||||
iconWidget = Image.memory(
|
||||
app.icon!,
|
||||
width: 40,
|
||||
height: 40,
|
||||
fit: BoxFit.contain,
|
||||
);
|
||||
} else {
|
||||
iconWidget = Icon(Icons.apps, size: 40);
|
||||
}
|
||||
|
||||
if (!widget.settings.colorIcons) {
|
||||
iconWidget = ColorFiltered(
|
||||
colorFilter: ColorFilter.matrix(<double>[
|
||||
0.2126, 0.7152, 0.0722, 0, 0,
|
||||
0.2126, 0.7152, 0.0722, 0, 0,
|
||||
0.2126, 0.7152, 0.0722, 0, 0,
|
||||
0, 0, 0, 1, 0,
|
||||
]),
|
||||
child: iconWidget,
|
||||
);
|
||||
}
|
||||
|
||||
return iconWidget;
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: TextField(
|
||||
controller: searchController,
|
||||
decoration: InputDecoration(
|
||||
hintText: 'Search apps...',
|
||||
border: InputBorder.none,
|
||||
),
|
||||
style: TextStyle(color: Colors.white),
|
||||
),
|
||||
actions: [
|
||||
Padding(
|
||||
padding: EdgeInsets.symmetric(horizontal: 15),
|
||||
child: PopupMenuButton<String>(
|
||||
enabled: searchController.text.isEmpty,
|
||||
icon: SvgPicture.asset(
|
||||
"assets/plasmoid.svg",
|
||||
width: 30,
|
||||
color: Colors.orange,
|
||||
),
|
||||
onSelected: (String value) {
|
||||
switch (value) {
|
||||
case 'Toggle Tags':
|
||||
widget.onSettingsChanged(AppSettings(
|
||||
showTags: !widget.settings.showTags,
|
||||
showIcons: widget.settings.showIcons,
|
||||
colorIcons: widget.settings.colorIcons,
|
||||
darkTheme: widget.settings.darkTheme,
|
||||
sortAlphabetically: widget.settings.sortAlphabetically,
|
||||
));
|
||||
break;
|
||||
case 'Toggle Icons':
|
||||
widget.onSettingsChanged(AppSettings(
|
||||
showTags: widget.settings.showTags,
|
||||
showIcons: !widget.settings.showIcons,
|
||||
colorIcons: widget.settings.colorIcons,
|
||||
darkTheme: widget.settings.darkTheme,
|
||||
sortAlphabetically: widget.settings.sortAlphabetically,
|
||||
));
|
||||
break;
|
||||
case 'Toggle Color Icons':
|
||||
widget.onSettingsChanged(AppSettings(
|
||||
showTags: widget.settings.showTags,
|
||||
showIcons: widget.settings.showIcons,
|
||||
colorIcons: !widget.settings.colorIcons,
|
||||
darkTheme: widget.settings.darkTheme,
|
||||
sortAlphabetically: widget.settings.sortAlphabetically,
|
||||
));
|
||||
break;
|
||||
case 'Toggle Theme':
|
||||
widget.onSettingsChanged(AppSettings(
|
||||
showTags: widget.settings.showTags,
|
||||
showIcons: widget.settings.showIcons,
|
||||
colorIcons: widget.settings.colorIcons,
|
||||
darkTheme: !widget.settings.darkTheme,
|
||||
sortAlphabetically: widget.settings.sortAlphabetically,
|
||||
));
|
||||
break;
|
||||
case 'Toggle Sorting':
|
||||
widget.onSettingsChanged(AppSettings(
|
||||
showTags: widget.settings.showTags,
|
||||
showIcons: widget.settings.showIcons,
|
||||
colorIcons: widget.settings.colorIcons,
|
||||
darkTheme: widget.settings.darkTheme,
|
||||
sortAlphabetically: !widget.settings.sortAlphabetically,
|
||||
));
|
||||
_filterApps();
|
||||
break;
|
||||
}
|
||||
},
|
||||
itemBuilder: (BuildContext context) => [
|
||||
PopupMenuItem<String>(
|
||||
value: 'Toggle Tags',
|
||||
child: ListTile(
|
||||
leading: Icon(widget.settings.showTags ? Icons.short_text : Icons.tag),
|
||||
title: Text(widget.settings.showTags ? 'Hide Tags' : 'Show Tags'),
|
||||
),
|
||||
),
|
||||
PopupMenuItem<String>(
|
||||
value: 'Toggle Icons',
|
||||
child: ListTile(
|
||||
leading: Icon(widget.settings.showIcons ? Icons.apps : Icons.apps_outlined),
|
||||
title: Text(widget.settings.showIcons ? 'Hide Icons' : 'Show Icons'),
|
||||
),
|
||||
),
|
||||
PopupMenuItem<String>(
|
||||
value: 'Toggle Color Icons',
|
||||
child: ListTile(
|
||||
leading: Icon(Icons.palette),
|
||||
title: Text(widget.settings.colorIcons ? 'Use Monochrome Icons' : 'Use Color Icons'),
|
||||
),
|
||||
),
|
||||
PopupMenuItem<String>(
|
||||
value: 'Toggle Theme',
|
||||
child: ListTile(
|
||||
leading: Icon(widget.settings.darkTheme ? Icons.light_mode : Icons.dark_mode),
|
||||
title: Text(widget.settings.darkTheme ? 'Switch to Light Mode' : 'Switch to Dark Mode'),
|
||||
),
|
||||
),
|
||||
PopupMenuItem<String>(
|
||||
value: 'Toggle Sorting',
|
||||
child: ListTile(
|
||||
leading: Icon(widget.settings.sortAlphabetically ? Icons.access_time : Icons.sort_by_alpha),
|
||||
title: Text(widget.settings.sortAlphabetically ? 'List by Last Used' : 'List Alphabetically'),
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
],
|
||||
),
|
||||
body: isLoading
|
||||
? Center(child: CircularProgressIndicator())
|
||||
: ListView.builder(
|
||||
itemCount: filteredApps.length,
|
||||
itemBuilder: (context, index) {
|
||||
final app = filteredApps[index];
|
||||
return Dismissible(
|
||||
key: Key(app.packageName),
|
||||
confirmDismiss: (direction) => _handleDismiss(direction, app),
|
||||
background: Container(
|
||||
color: Colors.orange,
|
||||
alignment: Alignment.centerLeft,
|
||||
padding: EdgeInsets.only(left: 20.0),
|
||||
child: Icon(Icons.edit, color: Colors.white),
|
||||
),
|
||||
secondaryBackground: Container(
|
||||
color: Colors.green,
|
||||
alignment: Alignment.centerRight,
|
||||
padding: EdgeInsets.only(right: 20.0),
|
||||
child: Icon(Icons.info, color: Colors.white),
|
||||
),
|
||||
child: ListTile(
|
||||
leading: widget.settings.showIcons ? _buildAppIcon(app) : null,
|
||||
title: Text(app.name),
|
||||
subtitle: widget.settings.showTags ? Text(app.tags.join(" ")) : null,
|
||||
onTap: () => _launchApp(app),
|
||||
),
|
||||
);
|
||||
},
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
65
lib/night.dart
Normal file
65
lib/night.dart
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
import 'package:flutter/material.dart';
|
||||
|
||||
const TextTheme nightText = TextTheme(
|
||||
titleLarge: TextStyle(color: Color(0xffc5c8c6)),
|
||||
bodyLarge: TextStyle(color: Color(0xffc5c8c6)),
|
||||
bodyMedium: TextStyle(color: Color(0xffc5c8c6)),
|
||||
bodySmall: TextStyle(color: Color(0xffc5c8c6)),
|
||||
displayLarge: TextStyle(color: Color(0xffc5c8c6)),
|
||||
displayMedium: TextStyle(color: Color(0xffc5c8c6)),
|
||||
displaySmall: TextStyle(color: Color(0xffc5c8c6)),
|
||||
headlineLarge: TextStyle(color: Color(0xffc5c8c6)),
|
||||
headlineMedium: TextStyle(color: Color(0xffc5c8c6)),
|
||||
headlineSmall: TextStyle(color: Color(0xffc5c8c6)),
|
||||
labelLarge: TextStyle(color: Color(0xffc5c8c6)),
|
||||
labelMedium: TextStyle(color: Color(0xffc5c8c6)),
|
||||
labelSmall: TextStyle(color: Color(0xffc5c8c6)),
|
||||
titleMedium: TextStyle(color: Color(0xffc5c8c6)),
|
||||
titleSmall: TextStyle(color: Color(0xffc5c8c6)),
|
||||
);
|
||||
|
||||
const nightTheme = {
|
||||
'comment': TextStyle(color: Color(0xff969896)),
|
||||
'quote': TextStyle(color: Color(0xff969896)),
|
||||
'variable': TextStyle(color: Color(0xffcc6666)),
|
||||
'template-variable': TextStyle(color: Color(0xffcc6666)),
|
||||
'tag': TextStyle(color: Color(0xffcc6666)),
|
||||
'name': TextStyle(color: Color(0xffcc6666)),
|
||||
'selector-id': TextStyle(color: Color(0xffcc6666)),
|
||||
'selector-class': TextStyle(color: Color(0xffcc6666)),
|
||||
'regexp': TextStyle(color: Color(0xffcc6666)),
|
||||
'deletion': TextStyle(color: Color(0xffcc6666)),
|
||||
'number': TextStyle(color: Color(0xffde935f)),
|
||||
'built_in': TextStyle(color: Color(0xffde935f)),
|
||||
'builtin-name': TextStyle(color: Color(0xffde935f)),
|
||||
'literal': TextStyle(color: Color(0xffde935f)),
|
||||
'type': TextStyle(color: Color(0xffde935f)),
|
||||
'params': TextStyle(color: Color(0xffde935f)),
|
||||
'meta': TextStyle(color: Color(0xffde935f)),
|
||||
'link': TextStyle(color: Color(0xffde935f)),
|
||||
'attribute': TextStyle(color: Color(0xfff0c674)),
|
||||
'string': TextStyle(color: Color(0xffb5bd68)),
|
||||
'symbol': TextStyle(color: Color(0xffb5bd68)),
|
||||
'bullet': TextStyle(color: Color(0xffb5bd68)),
|
||||
'addition': TextStyle(color: Color(0xffb5bd68)),
|
||||
'title': TextStyle(color: Color(0xff81a2be)),
|
||||
'section': TextStyle(color: Color(0xff81a2be), fontWeight: FontWeight.w600, fontSize: 18),
|
||||
'keyword': TextStyle(color: Color(0xffb294bb)),
|
||||
'selector-tag': TextStyle(color: Color(0xffb294bb)),
|
||||
'root':
|
||||
TextStyle(backgroundColor: Color(0xFF121212), color: Color(0xffc5c8c6)),
|
||||
'emphasis': TextStyle(fontStyle: FontStyle.italic),
|
||||
'strong': TextStyle(fontWeight: FontWeight.bold),
|
||||
'tag-hash': TextStyle(
|
||||
color: Colors.pinkAccent,
|
||||
fontStyle: FontStyle.italic,
|
||||
fontWeight: FontWeight.bold),
|
||||
'tag-plus': TextStyle(
|
||||
color: Colors.cyan,
|
||||
fontStyle: FontStyle.italic,
|
||||
fontWeight: FontWeight.bold),
|
||||
'tag-at': TextStyle(
|
||||
color: Colors.orange,
|
||||
fontStyle: FontStyle.italic,
|
||||
fontWeight: FontWeight.bold),
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue