t_widgets 1.8.5
t_widgets: ^1.8.5 copied to clipboard
A collection of reusable Flutter custom widgets designed to simplify UI development, speed up prototyping, and enhance cross-platform apps.
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:t_client/t_client.dart';
import 'package:t_widgets/internal.dart';
import 'package:t_widgets/t_widgets.dart';
void main() async {
final client = TClient();
await TWidgets.instance.init(
defaultImageAssetsPath: 'assets/thancoder_logo_1.png',
getCachePath: (url) =>
'/home/than/projects/plugins/t_widget/example/.cache/1234-${url.getName()}.png',
onDownloadImage: (url, savePath) async {
await client.download(url, savePath: savePath);
},
);
runApp(MaterialApp(home: const MyApp()));
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String url =
'https://images.pexels.com/photos/1103970/pexels-photo-1103970.jpeg?auto=compress&cs=tinysrgb&w=2000';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('Plugin example app')),
body: Center(child: TImageAsset(assetPath: 'assets/cover.png')),
floatingActionButton: FloatingActionButton(
onPressed: () {
// url =
// 'https://images.unsplash.com/photo-1506744038136-46273834b3fb?w=2000';
// setState(() {});
// showDialog(
// context: context,
// barrierDismissible: false,
// builder: (context) => TProgressDialog(manager: ProgressManager()),
// );
},
),
);
}
}
class ProgressManager extends TProgressManagerSimple {
bool isCancel = false;
@override
void cancel() {
isCancel = true;
}
@override
Future<void> startWorking(StreamController<TProgress> controller) async {
try {
controller.add(TProgress.preparing(indexLength: 100));
await Future.delayed(Duration(seconds: 1));
for (var i = 0; i <= 100; i++) {
if (isCancel) {
controller.addError('progress cancel');
break;
}
controller.add(
TProgress.progress(
index: 1,
indexLength: 1,
loaded: i,
total: 100,
message: 'Progress: $i',
),
);
await Future.delayed(Duration(milliseconds: 100));
}
await controller.close();
} catch (e) {
controller.addError(e);
}
}
}