april_flutter_utils 0.1.2
april_flutter_utils: ^0.1.2 copied to clipboard
A package for flutter APP development.
example/lib/main.dart
import 'dart:convert';
import 'dart:io';
import 'package:april_flutter_utils/april_flutter_utils.dart';
import 'package:flutter/material.dart';
import 'package:html/dom.dart' as dom;
import 'package:html/parser.dart' as parser;
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({Key? key}) : super(key: key);
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Plugin example app'),
),
body: const ExampleWidget(),
),
);
}
}
class ExampleWidget extends StatefulWidget {
const ExampleWidget({Key? key}) : super(key: key);
@override
State<ExampleWidget> createState() => _ExampleWidgetState();
}
class _ExampleWidgetState extends State<ExampleWidget> {
late HttpClient client;
@override
void initState() {
super.initState();
client = HttpClient();
}
@override
void dispose() {
client.close();
super.dispose();
}
///请求谷歌翻译
void translate() async {
HttpClientRequest request = await client.getUrl(
Uri.parse(
'https://translate.google.com/m?sl=en&tl=zh-CN&q=hello',
),
);
HttpClientResponse response = await request.close();
String result = await response.transform(const Utf8Decoder()).join();
dom.Document document = parser.parse(result);
dom.Element? element = document.querySelector('div[class="result-container"]');
debugPrint('翻译结果:${element?.text}');
}
@override
Widget build(BuildContext context) {
return Column(children: [
PeriodicScaleAnimationWidget(
detectorKey: const ValueKey<String>('周期性缩放动画'),
child: const Icon(Icons.diamond, size: 48),
),
ShakeWidget(
detectorKey: const ValueKey<String>('旋转动画'),
child: const Icon(Icons.title, size: 48),
),
ElevatedButton(
onPressed: translate,
child: const Text('请求谷歌翻译'),
),
]);
}
}
final Pagination<void> pagination = SimpleIntPaginationController<void>(
paginationConfig: SimplePaginationConfig<int>(
startPageNum: 0,
getNextPageNum: (currentPageNum) => currentPageNum + 1,
),
request: (pageNum, pageSize) async {
return <void>[];
},
);
final Refreshable<void> refreshable = SimpleRefreshableController<void>(
config: const RefreshableConfig(),
request: () async {
return <void>[];
},
);
class CustomPaginationController extends AbsPaginationController<int, IntWrapper, int> {
CustomPaginationController({required super.paginationConfig});
@override
Future<IntWrapper> loadMoreInternal() {
// TODO: implement loadMoreInternal
throw UnimplementedError();
}
@override
Future<IntWrapper> refreshInternal() {
// TODO: implement refreshInternal
throw UnimplementedError();
}
}
class IntWrapper extends AbsPaginationDataWrapper<int> {
@override
// TODO: implement data
List<int> get data => throw UnimplementedError();
@override
// TODO: implement hasMore
bool get hasMore => throw UnimplementedError();
@override
// TODO: implement succeed
bool get succeed => throw UnimplementedError();
}