than_pkg 3.8.0 copy "than_pkg: ^3.8.0" to clipboard
than_pkg: ^3.8.0 copied to clipboard

My personal Flutter plugin with support for both Android and Linux platforms.

example/lib/main.dart

import 'dart:io';

import 'package:flutter/material.dart';
import 'package:than_pkg/enums/screen_orientation_types.dart';
import 'package:than_pkg/than_pkg.dart';
import 'package:than_pkg/types/installed_app.dart';

void main() async {
  WidgetsFlutterBinding.ensureInitialized();

  await ThanPkg.instance.init(
    isShowDebugLog: true,
  );

  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({super.key});

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  void initState() {
    super.initState();
    init();
  }

  bool isFullScreen = false;
  String imageUri = '';
  final TextEditingController textEditingController = TextEditingController();
  List<InstalledApp> appList = [];

  void init() async {
    if (Platform.isAndroid) {
      await ThanPkg.android.app.toggleKeepScreenOn(isKeep: true);
    }

    // MapServices.get<String>({}, ['name'], defaultValue: '');
    // MapServices.get<int>({}, ['num'], defaultValue: 1);
    // MapServices.get<double>({}, ['height'], defaultValue: 0.0);
    // //or
    // MapServices.get({}, ['keys'], defaultValue: ''); // -> type - auto cast
    // MapServices.get({
    //   'main': {'key': 'than'}
    // }, [
    //   'main',
    //   'key'
    // ], defaultValue: 'default name');

    // ThanPkg.appUtil.getParseMinutes(minutes);
    // ThanPkg.appUtil.copyText(text);
    // ThanPkg.appUtil.pasteText();
    // await ThanPkg.appUtil.clearImageCache();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      // theme: ThemeData.dark(),
      home: Scaffold(
        appBar: isFullScreen
            ? null
            : AppBar(
                title: const Text('test lib'),
              ),
        body: _getListWidget(),
        floatingActionButton: FloatingActionButton(
          // onPressed: _test,
          onPressed: () async {
            try {
              if (!await ThanPkg.platform.isStoragePermissionGranted()) {
                await ThanPkg.platform.requestStoragePermission();
              }
              // appList = await ThanPkg.android.app.getInstalledAppsList();
              // await ThanPkg.android.thumbnail.getPdfPageData(path: path, page: page);
              // final outfile = await ThanPkg.platform.getAppExternalPath();
              // final stringBuff = StringBuffer('---app list---\n');
              // for (var app in list) {
              //   stringBuff.writeln('name: ${app.appName}');
              //   stringBuff.writeln('packageName: ${app.packageName}');
              //   stringBuff.writeln('versionName: ${app.versionName}');
              //   stringBuff.writeln('versionCode: ${app.versionCode}');
              //   stringBuff.writeln('---end---');
              // }
              // debugPrint(stringBuff.toString());

              // print('exported');
              // final list = await ThanPkg.android.app.getInstalledAppsList();
              // print(list.map((e) => e['packageName']).toList().join('\n'));
              // extension
              // final map = {'name': 'than', 'age': 29};
              // map.getString(['name-'], def: 'i def');
              // map.getBool(['isTrue']);
              // map.getDouble(['level']);
              // map.getInt(['age']);

              // final res = await ThanPkg.platform.getWifiAddressList();
              // final res = await ThanPkg.platform.getAppExternalPath();
              // final res = MapServices.getBool({'name': 134534}, ['name']);
              // ThanPkg.android.app
              //     .requestOrientation(type: ScreenOrientationTypes.portrait);
              // final res = await ThanPkg.platform.getWifiAddressList();
              // final res = MapServices.getString({'name':5},['name'],defaultValue: 'default name');
              // final res = MapServices.getDouble({},['name'],defaultValue: 0.5);
              // final res = MapServices.getInt({},['name'],defaultValue: 5);
              // final res =
              // MapServices.get({'name': 9.5}, ['name'], defaultValue: 'name');
              // final res = MapServices.get({
              //   'main': {'key': 'than'}
              // }, [
              //   'main',
              //   'keyk'
              // ], defaultValue: 'default name');
            } catch (e) {
              debugPrint(e.toString());
            }
          },
          child: Icon(Icons.get_app),
        ),
      ),
    );
  }

  Widget _getListWidget() {
    return Padding(
      padding: const EdgeInsets.all(8.0),
      child: ListView.builder(
        itemCount: appList.length,
        itemBuilder: (context, index) {
          final item = appList[index];
          return Row(
            children: [
              item.coverData == null
                  ? SizedBox.shrink()
                  : SizedBox(
                      width: 50,
                      height: 50,
                      child: Image.memory(item.coverData!)),
              Expanded(
                child: Card(
                  child: Padding(
                    padding: const EdgeInsets.all(8.0),
                    child: Column(
                      crossAxisAlignment: CrossAxisAlignment.start,
                      spacing: 3,
                      children: [
                        Text('appName: ${item.appName}'),
                        Text('packageName: ${item.packageName}'),
                        Text('versionName: ${item.versionName}'),
                        Text('versionCode: ${item.versionCode}'),
                        Text('Size: ${item.size!.getSizeLabel()}'),
                        IconButton(
                            onPressed: () async {
                              final outfile =
                                  await ThanPkg.platform.getAppExternalPath();
                              await item.export('$outfile/${item.appName}.apk');
                              debugPrint('saved');
                            },
                            icon: Icon(Icons.save))
                      ],
                    ),
                  ),
                ),
              ),
            ],
          );
        },
      ),
    );
  }
}
1
likes
140
points
1.22k
downloads

Publisher

unverified uploader

Weekly Downloads

My personal Flutter plugin with support for both Android and Linux platforms.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

flutter, intl, mime, package_info_plus, plugin_platform_interface, timeago, window_manager

More

Packages that depend on than_pkg

Packages that implement than_pkg