Dart

Dart

Dart is a client-optimized programming language for fast apps on multiple platforms. It is developed by Google and is used to build mobile, desktop, backend and web applications. Dart is an object-oriented, class defined, garbage-collected language using a C-style syntax that transcompiles optionally into JavaScript.
Fabiola  Auma

Fabiola Auma

1656756000

A Flutter Plugin to Show incoming Call In Your Flutter App!

Flutter_incoming_call

A Flutter plugin to show incoming call in your Flutter app! Alpha version(not ready for production!)

Usage

To use this plugin:

  1. Configure android project: Just add to your manifest activity and receiver.
<activity
    android:name="com.github.alezhka.flutter_incoming_call.IncomingCallActivity"
    android:theme="@style/Theme.AppCompat"
    android:screenOrientation="portrait"
    android:showOnLockScreen="true">
    <intent-filter>
        <action android:name="com.github.alezhka.flutter_incoming_call.activity.ACTION_INCOMING_CALL" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

<receiver android:name="com.github.alezhka.flutter_incoming_call.CallBroadcastReceiver"
    android:enabled="true"
    android:exported="false"/>
  1. Configure Flutter plugin:
FlutterIncomingCall.configure(
    appName: 'example_incoming_call',
    duration: 30000,
    android: ConfigAndroid(
        vibration: true,
        ringtonePath: 'default',
        channelId: 'calls',
        channelName: 'Calls channel name',
        channelDescription: 'Calls channel description',
    ),
    ios: ConfigIOS(
        iconName: 'AppIcon40x40',
        ringtonePath: null,
        includesCallsInRecents: false,
        supportsVideo: true,
        maximumCallGroups: 2,
        maximumCallsPerCallGroup: 1,
    )
)
  1. Listen events:
FlutterIncomingCall.onEvent.listen((event) {
    if(event is CallEvent) { // Android | IOS
    } else if(event is HoldEvent) { // IOS
    } else if(event is MuteEvent) { // IOS
    } else if(event is DmtfEvent) { // IOS
    } else if(event is AudioSessionEvent) { // IOS
    }
});
  1. Call api:
FlutterIncomingCall.displayIncomingCall(String uid, String name, String avatar, String handle, String type, bool isVideo);
FlutterIncomingCall.endCall(String uuid);
FlutterIncomingCall.endAllCalls();

Demo

iosios (Lockscreen)AndroidAndroid (Lockscreen)

Example

Check out the example in the example project folder for a working example.

Use this package as a library

Depend on it

Run this command:

With Flutter:

 $ flutter pub add flutter_incoming_call

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):

dependencies:
  flutter_incoming_call: ^0.1.1

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:flutter_incoming_call/flutter_incoming_call.dart';

example/lib/main.dart

import 'package:flutter/material.dart';
import 'dart:async';

import 'package:flutter_incoming_call/flutter_incoming_call.dart';
import 'package:uuid/uuid.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  var uuid = Uuid();

  BaseCallEvent? _lastEvent;
  CallEvent? _lastCallEvent;
  HoldEvent? _lastHoldEvent;
  MuteEvent? _lastMuteEvent;
  DmtfEvent? _lastDmtfEvent;
  AudioSessionEvent? _lastAudioSessionEvent;

  void _incomingCall() {
    final uid = uuid.v4();
    final name = 'Daenerys Targaryen';
    final avatar = 'https://scontent.fhel6-1.fna.fbcdn.net/v/t1.0-9/62009611_2487704877929752_6506356917743386624_n.jpg?_nc_cat=102&_nc_sid=09cbfe&_nc_ohc=cIgJjOYlVj0AX_J7pnl&_nc_ht=scontent.fhel6-1.fna&oh=ef2b213b74bd6999cd74e3d5de235cf4&oe=5F6E3331';
    final handle = 'example_incoming_call';
    final type = HandleType.generic;
    final isVideo = true;
    FlutterIncomingCall.displayIncomingCall(uid, name, avatar, handle, type, isVideo);
  }

  void _endCurrentCall() {
    if(_lastEvent != null) {
      FlutterIncomingCall.endCall(_lastCallEvent!.uuid);
    }
  }

  void _endAllCalls() {
    FlutterIncomingCall.endAllCalls();
  }

  @override
  void initState() {
    super.initState();
    FlutterIncomingCall.configure(
      appName: 'example_incoming_call',
      duration: 30000,
      android: ConfigAndroid(
        vibration: true,
        ringtonePath: 'default',
        channelId: 'calls',
        channelName: 'Calls channel name',
        channelDescription: 'Calls channel description',
      ),
      ios: ConfigIOS(
        iconName: 'AppIcon40x40',
        ringtonePath: null,
        includesCallsInRecents: false,
        supportsVideo: true,
        maximumCallGroups: 2,
        maximumCallsPerCallGroup: 1,
      )
    );
    FlutterIncomingCall.onEvent.listen((event) {
      setState(() { _lastEvent = event; });
      if(event is CallEvent) {
        setState(() { _lastCallEvent = event; });
      } else if(event is HoldEvent) {
        setState(() { _lastHoldEvent = event; });
      } else if(event is MuteEvent) {
        setState(() { _lastMuteEvent = event; });
      } else if(event is DmtfEvent) {
        setState(() { _lastDmtfEvent = event; });
      } else if(event is AudioSessionEvent) {
        setState(() { _lastAudioSessionEvent = event; });
      }
    });
  }

  @override
  void dispose() {
    _endAllCalls();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Plugin example app'),
        ),
        body: SingleChildScrollView(
          child: Column(
            mainAxisSize: MainAxisSize.max,
            mainAxisAlignment: MainAxisAlignment.start,
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[
              TextButton(
                child: Text('Incoming call now'),
                onPressed: _incomingCall,
              ),
              SizedBox(height: 16),
              TextButton(
                child: Text('Incoming call delay 5 sec'),
                onPressed: () => Future.delayed(Duration(seconds: 5), _incomingCall),
              ),
              SizedBox(height: 16),
              TextButton(
                child: Text('End current call'),
                onPressed: _endCurrentCall,
              ),
              SizedBox(height: 16),
              TextButton(
                child: Text('End all calls'),
                onPressed: _endAllCalls,
              ),
              SizedBox(height: 16),
              Text(
                'Last event:',
                style: TextStyle(
                  fontSize: 16,
                  fontWeight: FontWeight.bold,
                ),
              ),
              Text(
                _lastEvent != null ? _lastEvent.toString() : 'Not event',
                style: TextStyle(
                    fontSize: 16
                ),
              ),
              if(_lastCallEvent != null) ...[
                Text(
                  'Last call event:',
                  style: TextStyle(
                    fontSize: 16,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  _lastCallEvent.toString(),
                  style: TextStyle(
                      fontSize: 16
                  ),
                )
              ],
              if(_lastHoldEvent != null) ...[
                Text(
                  'Last hold event:',
                  style: TextStyle(
                    fontSize: 16,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  _lastHoldEvent.toString(),
                  style: TextStyle(
                      fontSize: 16
                  ),
                )
              ],
              if(_lastMuteEvent != null) ...[
                Text(
                  'Last mute event:',
                  style: TextStyle(
                    fontSize: 16,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  _lastMuteEvent.toString(),
                  style: TextStyle(
                      fontSize: 16
                  ),
                )
              ],
              if(_lastDmtfEvent != null) ...[
                Text(
                  'Last dmtf event:',
                  style: TextStyle(
                    fontSize: 16,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  _lastDmtfEvent.toString(),
                  style: TextStyle(
                      fontSize: 16
                  ),
                )
              ],
              if(_lastAudioSessionEvent != null) ...[
                Text(
                  'Last audio session event:',
                  style: TextStyle(
                    fontSize: 16,
                    fontWeight: FontWeight.bold,
                  ),
                ),
                Text(
                  _lastAudioSessionEvent.toString(),
                  style: TextStyle(
                      fontSize: 16
                  ),
                )
              ]
            ],
          ),
        ),
      ),
    );
  }
}

Author: Alezhka
Source code: https://github.com/Alezhka/flutter_incoming_call
License: GPL-3.0 license

#dart #flutter 

A Flutter Plugin to Show incoming Call In Your Flutter App!
Daniel  Hughes

Daniel Hughes

1656756000

Bidmad Plugin: Flutter Plugin for using BidmadSDK

Introduce

BidmadPlugin is a plugin for using Bidmad, a mobile app advertisement SDK, in Flutter.
You can use the plugin to serve banner/interstitial/reward ads in your flutter mobile app.
 

Flutter Sample Download

Programming Guide

1. Android Setting

*If you are using a version lower than 1.0.0, please check here first before proceeding to the guide below.

1.1 gradle.properties Setting

Add the options below to gradle.properties

...
android.enableDexingArtifactTransform=false

1.2 Proguard Settings

If you are using Proguard, add the rule below.

...
-keep class com.adop.sdk.** { *; }
-keep class ad.helper.openbidding.** { *; }
-keep class com.adop.adapter.fc.** { *; }
-keep class com.adop.adapter.fnc.** { *; }
-keepnames class * implements java.io.Serializable
-keepclassmembers class * implements java.io.Serializable {
    static final long serialVersionUID;
    private static final java.io.ObjectStreamField[] serialPersistentFields;
    !static !transient <fields>;
    private void writeObject(java.io.ObjectOutputStream);
    private void readObject(java.io.ObjectInputStream);
    java.lang.Object writeReplace();
    java.lang.Object readResolve();
}
-keepclassmembers class * {
    @android.webkit.JavascriptInterface <methods>;
}

# Pangle
-keep class com.bytedance.sdk.** { *; }
-keep class com.bykv.vk.openvk.component.video.api.** { *; }

# Tapjoy
-keep class com.tapjoy.** { *; }
-keep class com.moat.** { *; }
-keepattributes JavascriptInterface
-keepattributes *Annotation*
-keep class * extends java.util.ListResourceBundle {
protected Object[][] getContents();
}
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
public static final *** NULL;
}
-keepnames @com.google.android.gms.common.annotation.KeepName class *
-keepclassmembernames class * {
@com.google.android.gms.common.annotation.KeepName *;
}
-keepnames class * implements android.os.Parcelable {
public static final ** CREATOR;
}
-keep class com.google.android.gms.ads.identifier.** { *; }
-dontwarn com.tapjoy.**

2. iOS Setting

2.1 import BidmadSDK-iOS CocoaPods

After fetching our plugin into your app by "flutter pub get", a "Podfile" will be generated in your project's iOS Folder.
 

  1. In Podfile, set the platform requirement to iOS 11.
    Bidmad-Guide-Flutter-1
     
  2. Install our CocoaPods iOS Framework with command "pod install"
    Bidmad-Guide-Flutter-2
     
  3. Now, open the Xcode Workspace file with the name "Runner.xcworkspace" and proceed to guide 2.2 below. Bidmad-Guide-Flutter-3
     

2.2 Xcode Build Setting

Select "No" for Enable Bitcode under your Build Setting.

2.3 Setting SKAdNetwork

To use AdNetworks provided by BidmadSDK, you need to add SKAdNetworkIdentifier to Info.plist. Please add SKAdNetworkItems below to info.plist.

<key>SKAdNetworkItems</key>
<array>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>cstr6suwn9.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>v9wttpbfk9.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>n38lu8286q.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>4dzt52r2t5.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>bvpn9ufa9b.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>2u9pt9hc89.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>4468km3ulz.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>4fzdc2evr5.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>7ug5zh24hu.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>8s468mfl3y.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>9rd848q2bz.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>9t245vhmpl.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>av6w8kgt66.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>f38h382jlk.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>hs6bdukanm.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>kbd757ywx3.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>ludvb6z3bs.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>m8dbw4sv7c.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>mlmmfzh3r3.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>prcb7njmu6.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>t38b2kh725.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>tl55sbb4fm.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>wzmmz9fp6w.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>yclnxrl5pm.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>ydx93a7ass.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>238da6jt44.skadnetwork</string>
    </dict>
    <dict>
      <key>SKAdNetworkIdentifier</key>
      <string>22mmun2rn5.skadnetwork</string>
    </dict>
</array>

Also, please add NSUserTrackingUsageDescription with your own description of why you would like to track user data (e.g. "App would like to access IDFA for tracking purpose") into info.plist

...
<key>NSUserTrackingUsageDescription</key>
<string>App would like to access IDFA for tracking purpose</string>
...

3. Using Plugin

3.1 InitializeSDK

At the starting point of your app, please call initializeSdk(). If initializeSdk method is not called, SDK initializes itself on your first loading, which subsequently may delay your first ad loading.

FlutterBidmadCommon().initializeSdk();

For interstitial and rewarded ads, instead of calling initializeSdk(), load your first ad at the starting point of your app by following the interstitial and rewarded ad loading guide below, and show your ad at the point of your choice.

3.1 Banner AD

The following is an example of requesting a Banner ad.

3.1.1 Banner placement based on position

....//Banner init
    FlutterBidmadCommon common = FlutterBidmadCommon();
    FlutterBaseBanner banner;

    common.initBannerChannel().then((value) {
      String _channelNm = value;

      banner = FlutterBaseBanner(
          channelName: _channelNm
      );

      banner.setAdInfo("Your Zone Id");

      banner.setCallbackListener(
          onLoadAd: (String zoneId){
            print("banner onLoadAd");
          },
          onFailAd: (String zoneId){
            print("banner onFailAd");
          }
      );

      //option 
      //banner.setInterval(120); //banner refresh time(60s~120s)
    });

....//Banner Load
    banner.load(300); //set Position Y(height)

....//Banner Remove
    banner.removeAdView();

3.1.2 Banner Widget

....//Banner Widget init
    Container(
      child: BidmadBannerWidget(
        onBidmadBannerWidgetCreated: _onWidgetTestCreated,
      ),
      height: 50.0, //Banner Height(50, 100, 250)
    ),

....//onBidmadBannerWidgetCreated 
  void _onWidgetTestCreated(FlutterBaseBanner controller){
    controller.setAdInfo("Your Zone Id");

    controller.setCallbackListener(
        onLoadAd: (String zoneId){
          print("banner onLoadAd");
        },
        onFailAd: (String zoneId){
          print("banner onFailAd");
        }
    );

    controller.loadWidget();
  }

3.2 Interstitial AD

The following is an example of requesting a Interstitial ad.

....//Interstitial init
    FlutterBidmadCommon common = FlutterBidmadCommon();
    FlutterBaseInterstitial interstitial;

    common.initInterstitialChannel().then((value) {
      String _channelNm = value;

      interstitial = FlutterBaseInterstitial(
          channelName: _channelNm
      );

      interstitial.setAdInfo("Your Zone Id");

      interstitial.setCallbackListener(
          onLoadAd: (String zoneId){
            print("interstitial onLoadAd");
          },
          onShowAd: (String zoneId){
            print("interstitial onShowAd" );
            interstitial.load(); //Ad Reload
          },
          onCloseAd: (String zoneId){
            print("interstitial onCloseAd");
          },
          onFailAd: (String zoneId){
            print("interstitial onFailAd");
          }
      );
    });

....//Interstitial Load
    interstitial.load();

....//Interstitial Show
    interstitial.isLoaded().then((value){
      if(value){
        interstitial.show();
      }
    });

3.3 Reward AD

The following is an example of requesting a Reward ad.

....//Reward init
    FlutterBidmadCommon common = FlutterBidmadCommon();
    FlutterBaseReward reward;

    common.initRewardChannel().then((value) {
      String _channelNm = value;
      reward = FlutterBaseReward(
          channelName: _channelNm
      );

      reward.setAdInfo("Your Zone Id");

      reward.setCallbackListener(
          onLoadAd: (String zoneId){
            print("reward onLoadAd");
          },
          onShowAd: (String zoneId){
            print("reward onShowAd");

            reward.load();
          },
          onCompleteAd: (String zoneId){
            print("reward onCompleteAd");
          },
          onSkipAd: (String zoneId){
            print("reward onSkippedAd");
          },
          onCloseAd: (String zoneId){
            print("reward onCloseAd");
          },
          onClickAd: (String zoneId){
            print("reward onClickAd");
          },
          onFailAd: (String zoneId){
            print("reward onFailAd");
          }
      );
    });

....//Reward Load
    reward.load();

....//Reward Show
    reward.isLoaded().then((value){
      if(value){
        reward.show();
      }
    });

3.4 ATT Functions

reqAdTrackingAuthorization() displays a popup, requesting for App Tracking Consent from user. And the function will return set of number string values, showing the result.

FlutterBidmadCommon common = FlutterBidmadCommon();
    common.reqAdTrackingAuthorization().then(
      (value) {
        switch (value) {
          case "0":
            print("App Tracking Not Determined");
            break;
          case "1":
            print("App Tracking Restricted Authoriziation Status");
            break;
          case "2":
            print("App Tracking Denied Authorization Status");
            break;
          case "3":
            print("App Tracking Authorized Authorization Status");
            break;
          case "4":
            print("user is on lower version than iOS 14");
            break;
        }
      }
    );

For App Tracking Not Determined, the function will return 0, For App Tracking Restricted Authoriziation Status, the function will return 1, For App Tracking Denied Authorization Status, the function will return 2, For App Tracking Authorized Authorization Status the function will return 3, and Lastly, if the user is on lower version than iOS 14 then it will return 4.

If you wish to obtain app tracking consent through a method other than what's provided by Plugin, If the user agrees, True, and if rejected, pass False to setAdvertiserTrackingEnabled.

    common.setAdvertiserTrackingEnabled(false);
    print(common.getAdvertiserTrackingEnabled());

4. Plugin Interface

4.1 FlutterBaseBanner

*Banner ads are handled through FlutterBaseBanner and this is a list of functions for that.

FunctionDescription
FlutterBaseBanner(@required String channelName)This is the FlutterBaseBanner constructor, Receives the Name for Channel creation as a Param.
Future(void) load(int y)Request a banner ad. When a banner ad is exposed, the banner is exposed at height y (center alignment).
Future(void) loadWidget()Request a banner ad. In order for the function to function properly, FlutterBaseBanner object must be obtained through the BidmadBannerWidget Class.
Future(void) setInterval(int sec)Set the banner refresh cycle.(60s~120s)
Future(void) setAdInfo(String zoneId)Set the issued ZoneId.
Future(void) setCUID(String cuid)Set the CUID property of each ad type. recommend encrypting text using sha256 or higher.
Future(void) hideBanner()Hide the banner View
Future(void) showBanner()Show the banner View.
Future(void) removeBanner()Remove the exposed banner.
void Function(String zoneId) onLoadAdIf a listener is registered, the registered function is called when ad load.
void Function(String zoneId) onFailAdIf a listener is registered, the registered function is called when ad load fail.

4.2 BidmadBannerWidget

*For banner ads in the form of a widget, it must be processed through BidmadBannerWidget, and this is a list of functions for that.

FunctionDescription
BidmadBannerWidget(BidmadBannerWidgetCreatedCallback onBidmadBannerWidgetCreated)This is the BidmadBannerWidget constructor. After creating the widget, it receives a callback for processing.
onBidmadBannerWidgetCreated(FlutterBaseBanner controller)It is a callback that can receive a FlutterBaseBanner and handle banner related processing.

4.3 FlutterBaseInterstitial

*Interstitial ads are handled through FlutterBaseInterstitial and this is a list of functions for that.

FunctionDescription
FlutterBaseInterstitial(@required String channelName)This is the FlutterBaseInterstitial constructor, Receives the Name for Channel creation as a Param.
Future(void) load()Request a interstitial ad
Future(void) show()Display the loaded interstitial ad
Future(bool) isLoaded()Check if the ad is loaded.
Future(void) setAdInfo(String zoneId)Set the issued ZoneId.
Future(void) setCUID(String cuid)Set the CUID property of each ad type. recommend encrypting text using sha256 or higher.
void Function(String zoneId) onLoadAdIf a listener is registered, the registered function is called when ad load.
void Function(String zoneId) onShowAdIf a listener is registered, the registered function is called when ad show.
void Function(String zoneId) onFailAdIf a listener is registered, the registered function is called when ad load fail.
void Function(String zoneId) onCloseAdIf a listener is registered, the registered function is called when ad close.

4.4 FlutterBaseReward

*Reward ads are handled through FlutterBaseReward and this is a list of functions for that.

FunctionDescription
FlutterBaseReward(@required String channelName)This is the FlutterBaseReward constructor, Receives the Name for Channel creation as a Param.
Future(void) load()Request a reward ad.
Future(void) show()Display the loaded reward ad.
Future(bool) isLoaded()Check if the ad is loaded.
Future(void) setAdInfo(String zoneId)Set the issued ZoneId.
Future(void) setCUID(String cuid)Set the CUID property of each ad type. recommend encrypting text using sha256 or higher.
void Function(String zoneId) onLoadAdIf a listener is registered, the registered function is called when ad load.
void Function(String zoneId) onShowAdIf a listener is registered, the registered function is called when ad show.
void Function(String zoneId) onFailAdIf a listener is registered, the registered function is called when ad load fail.
void Function(String zoneId) onCompleteAdIf a listener is registered, the registered function is called when ad complate.
void Function(String zoneId) onCloseAdIf a listener is registered, the registered function is called when ad close.
void Function(String zoneId) onClickAdIf a listener is registered, the registered function is called when ad click.
void Function(String zoneId) onSkipAdIf a listener is registered, the registered function is called when ad skip.

4.5 FlutterBidmadCommon

*This is a list of functions available through BidmadCommon.

FunctionDescription
FlutterBidmadCommon()This is the FlutterBidmadCommon constructor
Future(void) setDebugging(bool isDebug)Debugging log output
Future(void) initializeSdk()Initialize BidmadSDK's supported ad networks
Future(String) initBannerChannel()Creating a channel for controlling banner ad
Future(String) initInterstitialChannel()Creating a channel for controlling interstitial ad
Future(String) initRewardChannel()Creating a channel for controlling reward ad
Future(String) reqAdTrackingAuthorization()Requesting for App Tracking Consent from user
Future(void) setAdvertiserTrackingEnabled(bool enable)Setting ATT Setting manually
Future(bool) getAdvertiserTrackingEnabled()Getting ATT Setting, true if consent and false if not consent

Use this package as a library

Depend on it

Run this command:

With Flutter:

 $ flutter pub add bidmad_plugin

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):

dependencies:
  bidmad_plugin: ^1.3.0

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:bidmad_plugin/BidmadBannerWidget.dart';
import 'package:bidmad_plugin/BidmadFlutterPlugin.dart';
import 'package:bidmad_plugin/FlutterBaseBanner.dart';
import 'package:bidmad_plugin/FlutterBaseInterstitial.dart';
import 'package:bidmad_plugin/FlutterBaseReward.dart';
import 'package:bidmad_plugin/FlutterBidmadCommon.dart';
import 'package:bidmad_plugin/FlutterBidmadGDPRforGoogle.dart';

Author:
Source code: https://pub.dev/packages/bidmad_plugin/install
License:

#dart #flutter 

Bidmad Plugin: Flutter Plugin for using BidmadSDK
Mike  Kozey

Mike Kozey

1656750905

Question_wizard: This Library Allows You to Play A Wizard Game

question_wizard

This library allows you to play a wizard game.

Installing

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add question_wizard

With Flutter:

 $ flutter pub add question_wizard

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  question_wizard: ^0.0.1

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:question_wizard/question_wizard.dart';

example/main.dart

import 'package:question_wizard/question_wizard.dart';

void main() {
  final List<Option> options = [
    new Option(label: 'choose a blue color', value: '#0000FF'),
    new Option(label: 'choose a green color', value: '#00FF00'),
  ];
  Prompter prompter = Prompter();

  String? colorCode = prompter.askMultiple('select a color:', options);
  bool answer = prompter.askBinary('do you like this package 🥰');

  if (answer) {
    print("thank's a lot buddy 😊");
  } else {
    print("I know that's not a great package. 😔");
  }
}

Original article source at: https://pub.dev/packages/question_wizard 

#flutter #dart #game 

Question_wizard: This Library Allows You to Play A Wizard Game

Builder Implementations Wrapping Dart VM Compilers

Vm compilers for users of package:build.

Installation

This package is intended to be used as a development dependency for users of package:build who want to run code in the Dart vm with precompiled kernel files. This allows you to share compilation of dependencies between multiple entrypoints, instead of doing a monolithic compile of each entrypoint like the Dart VM would normally do on each run.

Note: If you want to use this package for running tests with dart run build_runner test you will also need a build_test dev dependency.

Usage

This package creates a .vm.app.dill file corresponding to each .dart file that contains a main function.

These files can be passed directly to the vm, instead of the dart script, and the vm will skip its initial parse and compile step.

You can find the output either by using the -o <dir> option for build_runner, or by finding it in the generated cache directory, which is located at .dart_tool/build/generated/<your-package>.

Configuration

There are no configuration options available at this time.

Custom Build Script Integration

If you are using a custom build script, you will need to add the following builder applications to what you already have, sometime after the build_modules builder applications:

    apply('build_vm_compilers|entrypoint',
        [vmKernelEntrypointBuilder], toRoot(),
        hideOutput: true,
        // These globs should match your entrypoints only.
        defaultGenerateFor: const InputSet(
            include: const ['bin/**', 'tool/**', 'test/**.vm_test.dart'])),
]

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add build_vm_compilers

With Flutter:

 $ flutter pub add build_vm_compilers

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  build_vm_compilers: ^1.0.11

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:build_vm_compilers/build_vm_compilers.dart'; 

Download Details:

Author: build

Source Code: https://github.com/dart-lang/build/tree/master/build_vm_compilers

#dart #android #ios 

Builder Implementations Wrapping Dart VM Compilers

Moment Converts Dart DateTime Object to Human-readable Text

Inspired by moment.js

Features

Convert DateTime to human-readable text.

Helper classes

Getting started ✨

Import the package

import 'package:moment_dart/moment_dart.dart';

Create Moment instance


final Moment now = Moment.now();

final Moment epoch = Moment.fromMillisecondsSinceEpoch(0, isUtc: true);

/// Using extension
final Moment bday = DateTime(2003, 6, 1, 5, 1).toMoment();
/// or from [DateTime]
final Moment bday = Moment(DateTime(2003, 6, 1, 5, 1));

As of version 0.7.0, DateTime is now superclass of Moment

class Moment extends DateTime { ... }

Usage 🌿

Relative durations

final Moment yesterday = Moment.now() - Duration(days: 1);

yesterday.fromNow(); // a day ago

// You can omit prefix/suffix
yesterday.fromNow(true); // a day

yesterday.from(yesterday - Duration(days: 365)); // a year ago

Calendar dates


now.subtract(const Duration(days: 1)).calendar();  // Yesterday at 10:02AM
now.calendar();                              // Today at 10:02AM
now.subtract(const Duration(days: 1)).calendar();  // Tomorrow at 10:02AM

// [reference] - defaults to Moment.now(), acts as an anchor.
// [omitHours] - omits the hour part. Hour part is formatted by "LT" token.
now.calendar(
  reference: (now - const Duration(days: 1)),
  omitHours: true,
); // Tomorrow

Start of year/month/.../moment

final Moment tada =
      DateTime(2022, 6, 19, 21, 9, 33).toMoment(); // June 19 2022 09:09 PM

tada.startOf(DurationUnit.day); // June 19 2022 12:00 AM
// OR
tada.startOfDay(); // June 19 2022 12:00 AM

Find last/next weekday

Works on DateTime and Moment

We're always dealing with local date times here. If the date is UTC, it's converted to local beforehand.

final Moment tada =
      DateTime(2022, 6, 19, 21, 9, 33).toMoment(); // June 19 2022 09:09 PM

tada.nextMonday(); // June 20 2022 09:09 PM

tada.lastMonday(); // June 13 2022 09:09 PM

// Note that "today" is neither last/next Sunday
tada.lastSunday(); // June 12 2022 09:09 PM

Is same unit as

Works on DateTime and Moment

final DateTime otherBday = DateTime(2003,6,19);
final Moment spiritRoverOnMars = DateTime(2003,6,10).toMoment();

otherBday.isAtSameMonthAs(spiritRoverOnMars); // true
otherBday.isAtSameYearAs(spiritRoverOnMars); // true

⚠️ It takes timezones into account

final DateTime bday = DateTime(2003,6,1,5,33); // 2003-05-31 21:33:00.000Z (Local time zone was GMT+08:00)
final Moment spiritRoverOnMars = DateTime(2003,6,10).toMoment(); // 2003-06-09 16:00:00.000Z

bday.isAtSameMonthAs(spiritRoverOnMars); // false; didn't happen in same month. Bday was in May, Spirit Rover landed in June.
bday.isAtSameYearAs(spiritRoverOnMars); // true

Formatting

See list of format tokens

now.format("YYYY MMMM Do - hh:mm:ssa"); //2003 June 1st - 05:01:00am
now.format("LTS");                      //5:01:00 AM
now.format("dddd");                     //Sunday
now.format("MMM Do YY");                //Jun 1st 03

Escape strings by encasulating them in square brackets ([]).

epoch.format("YYYY [YYYY] MMMM [MMMM] Do [Do] LT [A]"); // 1970 YYYY January MMMM 1st Do 12:00 AM A

Alternatively, unmatched tokens will be left as is

epoch.format("YYYY년 MMM D일 ddd A h:mm"); // 1970년 1월 1일 목 오전 8:00 (Localization: KO)

Parsing

Currently uses DateTime.parse()

COMING SOON 💫

Changing localization 🌐

Localization defaults to MomentLocalizations.enUS()

final Moment hangulday2022 = Moment(DateTime(2022,10,9), localization: MomentLocalizations.ko());

hangulday2022.format("ll"); // 2022년 10월 9일
hangulday2022.format("LL"); // 2022년 10월 9일

Available Localization classes:

Localizations are classes that extend MomentLocalization

See how you can create your own localization

  • LocalizationEnUs (English - United States) [en_US]
  • LocalizationKorean (Korean) [ko]
  • LocalizationGermanStandard (German) [de_DE]
  • LocalizationMongolianCyrillic (Mongolian) [mn]
    • LocalizationMongolianTraditional (Mongolian) [mn]
    • LocalizationMongolianTraditionalNumbers (Uses traditional Mongolian numbers)

Salt 🧂 and pepper

Moment provides an extension with set of useful functions. Can be called on either Moment or DateTime instance

final Moment date = DateTime(2022,03,29).toMoment();
// It can also work on [DateTime] too!
final DateTime date = DateTime(2022,03,29);

//Returns the ISO Week number of the year
//
// [1,2,3,...,52,53]
date.week == 13; // true

// Returns the year according to ISO Week
date.weekYear == 2022; // true

// Returns the quarter of the year. [][Jan,Feb,Mar][Apr,May,Jun][Jul,Aug,Sep][Oct,Nov,Dec]
//
// [1,2,3,4]
date.quarter == 1; // true

// Returns if the [year] is leap year
date.isLeapYear == false; // true

/// Returns ordinal day of the year
/// 
/// [1,2,3,...,365,366]
date.dayOfYear == 88; // true

Comparison can be called on either Moment or DateTime. Accounts UTC/Local timezone.

Available for all units: year, month, day, hour, minute, second, millisecond, microsecond

final DateTime local = DateTime(1972, 1, 1, 7); // Jan 1, 1972 at 7AM @GMT+8
final DateTime utc = local.toUtc();             // Dec 31, 1971 at 11PM @UTC

local.isAtSameYearAs(utc); // true

Read more about ISO week on Wikipedia

Creating your own Localization ➕

Extend MomentLocalization class to get started.

Almost everything is declared as function, so you can freely achieve the unique features of your language.

I highly recommend copying one of the existing implementations then work on top of it!

CatLanguage extends MomentLocalization {
  @override
  String relative(Duration duration, [bool dropPrefixOrSuffix = false]) => "a two meow ago";

  @override
  String weekdayName(int i) => "Meowday #$i";

  @override
  String calendar(Moment moment, {Moment? reference, bool weekStartOnSunday = false, bool omitHours = false}) => "Last Meowday";

  /// Please refer to the [FormatterToken] enum for details.
  /// 
  /// It contains almost all of the tokens mentioned in https://momentjs.com/docs/#/parsing/string-format/
  Map<FormatterToken, FormatterTokenFn?> formats() => {};

  @override
  String languageCodeISO() => "meow";

  @override
  String endonym() => "Meow-meow meow";

  @override
  String locale() => "meow";

  @override
  String languageNameInEnglish() => "Cat tongue";
}

Format Tokens 🔑

Encapsulate string in square brackets ([]) to escape.

TypeTokenExamplesDescription
MonthM1 2 ... 11 12 
 Mo1st 2nd ... 11th 12th 
 MM01 02 ... 11 12 
 MMMJan Feb ... Nov Dec 
 MMMMJanuary February ... November December 
Quarter of yearQ1 2 3 4 
 Qo1st 2nd 3rd 4th 
Day of monthD1 2 ... 30 31 
 Do1st 2nd ... 30th 31st 
 DD01 02 ... 30 31 
Day of yearDDD1 2 ... 364 365 
 DDDo1st 2nd ... 364th 365th 
 DDDD001 002 ... 364 365 
Day of weekd1 2 ...6 7Moment.js uses `0-6`. However, we'll be using `1-7` to be in accordance with [DateTime]
 d_o1st 2nd ... 6th 7th"do" is Dart language keyword
 ddMo Tu ... Sa Su 
 dddMon Tue ... Sat Sun 
 ddddMonday ... Saturday Sunday 
Day of week (ISO)e1 2 ... 6 7 
Week of year (ISO)w1 2 ... 52 53 
 wo1st 2nd ... 52nd 53rd 
 ww01 02 ... 52 53 
YearYY70 71 ... 29 30 
 YYYY1970 1971 ... 2029 2030 
Era Yeary1 2 ... 2020 ... 
EraNNBC ADAbbr era name
 NNNNBefore Christ, Anno DominiFull era name
 NNNNNBC ADNarrow era name
Week yeargg70 71 ... 29 30 
 gggg1970 1971 ... 2029 2030 
AM/PMAAM PMUPPERCASE
 aam pmlowercase
HourH0 1 ... 22 23 
 HH00 01 ... 22 23 
 h1 2 ... 11 12 
 hh01 02 ... 11 12 
 k1 2 ... 23 24 
 kk01 02 ... 23 24 
Minutem0 1 ... 58 59 
 mm00 01 ... 58 59 
Seconds0 1 ... 58 59 
 ss00 01 ... 58 59 
Fractional secondS0 1 ... 8 9 
 SS00 01 ... 98 99 
 SSS000 001 ... 998 999 
 SSSS0000 0001 ... 9998,9999 
 SSSSS00000 00001 ... 99998,99999 
 SSSSSS000000 000001 ... 999998,999999 
TimezoneZ-07:00 -06:00 ... +06:00 +07:00 
 ZZ-0700 -0600 ... +0600 +0700 
Timezone nameZZZ Returns [DateTime.timeZoneName], result may not be consistent across platforms
Unix timestamp in secondsX1654063960 
Unix timestampx1654063974620 
Localization Defaultsl9/4/1986Date (in local format, shorter)
 L09/04/1986Date (in local format)
 llSep 4 1986Month name, day of month, year (shorter)
 LLSeptember 04 1986Month name, day of month, year
 lllSep 4 1986 8:30 PMMonth name, day of month, year, time
 LLLSeptember 04 1986 8:30 PMMonth name, day of month, year, time
 llllThu, Sep 4 1986 8:30 PMDay of week, month name, day of month, year, time (shorter)
 LLLLThursday, September 04 1986 8:30 PMDay of week, month name, day of month, year, time
 LT8:30 PMTime (without seconds)
 LTS8:30:00 PMTime (with seconds)

TODO ✔️

  • Add more localizations
  • Implement parsing

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add moment_dart

With Flutter:

 $ flutter pub add moment_dart

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  moment_dart: ^0.7.2

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:moment_dart/moment_dart.dart'; 

example/moment_dart_example.dart

import "package:moment_dart/moment_dart.dart";

void main() {
  final MomentLocalization localization = MomentLocalizations.enUS();

  /// If localization is omitted, it defaults to English (United States)
  final Moment moment =
      Moment.now(localization: localization) - Duration(days: 1);
  final Moment epoch =
      Moment(DateTime.fromMicrosecondsSinceEpoch(0, isUtc: true));
  final Moment epochPlusFiveDays = epoch + Duration(days: 5);
  final Moment epochPlusAYear = epoch + Duration(days: 365);

  localization.relative(const Duration(seconds: 2)); //in a few seconds
  localization.weekdayName(epoch.weekday); // "Thursday"
  epochPlusFiveDays.from(epoch, true); // "5 days"
  epochPlusFiveDays.from(epoch); // "in 5 days"
  epoch.calendar(
      reference: epochPlusFiveDays, omitHours: true); // "Last Thursday"
  epochPlusFiveDays.calendar(reference: epoch, omitHours: true); // "Tuesday"
  epochPlusAYear.from(epoch); //"in a year"
  epochPlusAYear.calendar(reference: epoch); // "01/01/1971 at 12:00AM"

  /// Returns relative string, such as `Yesterday`, `Last Sunday`, or default date format concatenated with default hour format.
  ///
  /// You can omit the hours using [omitHours] argument.
  ///
  /// [reference] is `Moment.now()` by default.
  moment.calendar();

  /// Example when using [LocalizationEnUs]:
  ///
  /// If [this] is yesterday, will result `"a day ago"`
  ///
  /// If [this] is tomorrow, will result `"in a day"`
  ///
  /// moment.js's `toNow()` function has been omitted, since this function prefixes/suffixes appropriately.
  moment.fromNow();

  /// Unmatched strings will be left as is.
  moment.format("YYYY년 MMMM Do dddd A hh:mm");
} 

Download Details:

Author: theirontnt

Source Code: https://github.com/theirontnt/moment_dart

#dart #moment 

Moment Converts Dart DateTime Object to Human-readable Text
Hunter  Krajcik

Hunter Krajcik

1656746160

Bungie-api-dart: Dart Definitions for The Bungie.net API

Bungie API Dart support

This project implements Dart definitions and API helpers for the Bungie.net API. It's based on bungie-api-ts that is meant for use in Destiny Item Manager, but should be general enough to use in any project. The code is completely generated from Bungie's documentation - I considered using something like Swagger Codegen, but instead opted for a custom generator so we could make the result as nice as possible.

Install

add this to your dependencies block in pubspec.yaml

dependencies:
  bungie_api: ^12.2.4

Interfaces and Enums

There are definitions for every type defined in the Bungie.net services. See their documentation for a list - the interface names are the last part of the full name (for example, Destiny.Definitions.DestinyVendorActionDefinition becomes DestinyVendorActionDefinition). There are a few exceptions, like SingleComponentResponseOfDestinyInventoryComponent, which have been mapped into nicer forms like SingleComponentResponse<DestinyInventoryComponent>, and the server responses, which are now ServerResponse<T> instead of something like DestinyCharacterResponse.

API Helpers

In addition to the types, there are also simple helper functions for each API endpoint. They define the inputs and outputs to that endpoint, and will call a user-provided function with HTTP request info that you can then use to make an HTTP request. This pattern was used so the API helpers could provide full type information. These helpers are not a full API client - they assist in building one. An example:

import 'dart:async';
import 'package:http/http.dart' as http;
import 'package:bungie_api_dart/destiny2.dart';

class BungieApiService{
  Future<ServerResponse<DestinyManifest>> getManifest(){
    return getDestinyManifest(new Client());
  }
}
class Client implements HttpClient{
  static const API_KEY = "your_key";
  @override
    Future<Object> request(HttpClientConfig config) {
      if(config.method == 'GET'){
        return http.get(config.url, headers: {'X-API-Key': API_KEY});
      }
      return http.post(config.url, headers: {'X-API-Key': API_KEY});
    }
}

Build

./install.sh && ./build.sh

Installing

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add bungie_api

With Flutter:

 $ flutter pub add bungie_api

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  bungie_api: ^13.14.0

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:bungie_api/api/app.dart';
import 'package:bungie_api/api/community_content.dart';
import 'package:bungie_api/api/content.dart';
import 'package:bungie_api/api/destiny2.dart';
import 'package:bungie_api/api/fireteam.dart';
import 'package:bungie_api/api/forum.dart';
import 'package:bungie_api/api/get_available_locales.dart';
import 'package:bungie_api/api/global_alerts.dart';
import 'package:bungie_api/api/group_v2.dart';
import 'package:bungie_api/api/settings.dart';
import 'package:bungie_api/api/social.dart';
import 'package:bungie_api/api/tokens.dart';
import 'package:bungie_api/api/trending.dart';
import 'package:bungie_api/api/user.dart';
import 'package:bungie_api/api/user_system_overrides.dart';
import 'package:bungie_api/app.dart';
import 'package:bungie_api/applications.dart';
import 'package:bungie_api/common.dart';
import 'package:bungie_api/communitycontent.dart';
import 'package:bungie_api/components.dart';
import 'package:bungie_api/config.dart';
import 'package:bungie_api/content.dart';
import 'package:bungie_api/core.dart';
import 'package:bungie_api/dates.dart';
import 'package:bungie_api/destiny2.dart';
import 'package:bungie_api/entities.dart';
import 'package:bungie_api/enums/activity_graph_node_highlight_type.dart';
import 'package:bungie_api/enums/application_scopes.dart';
import 'package:bungie_api/enums/application_status.dart';
import 'package:bungie_api/enums/awa_response_reason.dart';
import 'package:bungie_api/enums/awa_type.dart';
import 'package:bungie_api/enums/awa_user_selection.dart';
import 'package:bungie_api/enums/bucket_category.dart';
import 'package:bungie_api/enums/bucket_scope.dart';
import 'package:bungie_api/enums/bungie_credential_type.dart';
import 'package:bungie_api/enums/bungie_membership_type.dart';
import 'package:bungie_api/enums/capabilities.dart';
import 'package:bungie_api/enums/chat_security_setting.dart';
import 'package:bungie_api/enums/community_content_sort_mode.dart';
import 'package:bungie_api/enums/component_privacy_setting.dart';
import 'package:bungie_api/enums/content_property_data_type_enum.dart';
import 'package:bungie_api/enums/damage_type.dart';
import 'package:bungie_api/enums/destiny_activity_difficulty_tier.dart';
import 'package:bungie_api/enums/destiny_activity_mode_category.dart';
import 'package:bungie_api/enums/destiny_activity_mode_type.dart';
import 'package:bungie_api/enums/destiny_activity_nav_point_type.dart';
import 'package:bungie_api/enums/destiny_ammunition_type.dart';
import 'package:bungie_api/enums/destiny_breaker_type.dart';
import 'package:bungie_api/enums/destiny_class.dart';
import 'package:bungie_api/enums/destiny_collectible_state.dart';
import 'package:bungie_api/enums/destiny_component_type.dart';
import 'package:bungie_api/enums/destiny_energy_type.dart';
import 'package:bungie_api/enums/destiny_game_privacy_setting.dart';
import 'package:bungie_api/enums/destiny_game_versions.dart';
import 'package:bungie_api/enums/destiny_gating_scope.dart';
import 'package:bungie_api/enums/destiny_gender.dart';
import 'package:bungie_api/enums/destiny_graph_node_state.dart';
import 'package:bungie_api/enums/destiny_item_sort_type.dart';
import 'package:bungie_api/enums/destiny_item_sub_type.dart';
import 'package:bungie_api/enums/destiny_item_type.dart';
import 'package:bungie_api/enums/destiny_join_closed_reasons.dart';
import 'package:bungie_api/enums/destiny_milestone_display_preference.dart';
import 'package:bungie_api/enums/destiny_milestone_type.dart';
import 'package:bungie_api/enums/destiny_objective_grant_style.dart';
import 'package:bungie_api/enums/destiny_objective_ui_style.dart';
import 'package:bungie_api/enums/destiny_party_member_states.dart';
import 'package:bungie_api/enums/destiny_presentation_display_style.dart';
import 'package:bungie_api/enums/destiny_presentation_node_state.dart';
import 'package:bungie_api/enums/destiny_presentation_node_type.dart';
import 'package:bungie_api/enums/destiny_presentation_screen_style.dart';
import 'package:bungie_api/enums/destiny_progression_reward_item_acquisition_behavior.dart';
import 'package:bungie_api/enums/destiny_progression_reward_item_state.dart';
import 'package:bungie_api/enums/destiny_progression_scope.dart';
import 'package:bungie_api/enums/destiny_progression_step_display_effect.dart';
import 'package:bungie_api/enums/destiny_race.dart';
import 'package:bungie_api/enums/destiny_record_state.dart';
import 'package:bungie_api/enums/destiny_record_toast_style.dart';
import 'package:bungie_api/enums/destiny_record_value_style.dart';
import 'package:bungie_api/enums/destiny_reward_source_category.dart';
import 'package:bungie_api/enums/destiny_scope.dart';
import 'package:bungie_api/enums/destiny_socket_array_type.dart';
import 'package:bungie_api/enums/destiny_socket_category_style.dart';
import 'package:bungie_api/enums/destiny_socket_visibility.dart';
import 'package:bungie_api/enums/destiny_stat_aggregation_type.dart';
import 'package:bungie_api/enums/destiny_stat_category.dart';
import 'package:bungie_api/enums/destiny_stats_category_type.dart';
import 'package:bungie_api/enums/destiny_stats_group_type.dart';
import 'package:bungie_api/enums/destiny_stats_merge_method.dart';
import 'package:bungie_api/enums/destiny_talent_node_state.dart';
import 'package:bungie_api/enums/destiny_talent_node_step_damage_types.dart';
import 'package:bungie_api/enums/destiny_talent_node_step_guardian_attributes.dart';
import 'package:bungie_api/enums/destiny_talent_node_step_impact_effects.dart';
import 'package:bungie_api/enums/destiny_talent_node_step_light_abilities.dart';
import 'package:bungie_api/enums/destiny_talent_node_step_weapon_performances.dart';
import 'package:bungie_api/enums/destiny_unlock_value_uistyle.dart';
import 'package:bungie_api/enums/destiny_vendor_filter.dart';
import 'package:bungie_api/enums/destiny_vendor_interaction_reward_selection.dart';
import 'package:bungie_api/enums/destiny_vendor_item_refund_policy.dart';
import 'package:bungie_api/enums/destiny_vendor_item_state.dart';
import 'package:bungie_api/enums/destiny_vendor_progression_type.dart';
import 'package:bungie_api/enums/destiny_vendor_reply_type.dart';
import 'package:bungie_api/enums/developer_role.dart';
import 'package:bungie_api/enums/equip_failure_reason.dart';
import 'package:bungie_api/enums/equipping_item_block_attributes.dart';
import 'package:bungie_api/enums/fireteam_date_range.dart';
import 'package:bungie_api/enums/fireteam_platform.dart';
import 'package:bungie_api/enums/fireteam_platform_invite_result.dart';
import 'package:bungie_api/enums/fireteam_public_search_option.dart';
import 'package:bungie_api/enums/fireteam_slot_search.dart';
import 'package:bungie_api/enums/forum_flags_enum.dart';
import 'package:bungie_api/enums/forum_media_type.dart';
import 'package:bungie_api/enums/forum_post_category_enums.dart';
import 'package:bungie_api/enums/forum_post_popularity.dart';
import 'package:bungie_api/enums/forum_post_sort_enum.dart';
import 'package:bungie_api/enums/forum_recruitment_intensity_label.dart';
import 'package:bungie_api/enums/forum_recruitment_tone_label.dart';
import 'package:bungie_api/enums/forum_topics_category_filters_enum.dart';
import 'package:bungie_api/enums/forum_topics_quick_date_enum.dart';
import 'package:bungie_api/enums/forum_topics_sort_enum.dart';
import 'package:bungie_api/enums/friend_relationship_state.dart';
import 'package:bungie_api/enums/global_alert_level.dart';
import 'package:bungie_api/enums/global_alert_type.dart';
import 'package:bungie_api/enums/group_alliance_status.dart';
import 'package:bungie_api/enums/group_application_resolve_state.dart';
import 'package:bungie_api/enums/group_date_range.dart';
import 'package:bungie_api/enums/group_homepage.dart';
import 'package:bungie_api/enums/group_member_count_filter.dart';
import 'package:bungie_api/enums/group_post_publicity.dart';
import 'package:bungie_api/enums/group_potential_member_status.dart';
import 'package:bungie_api/enums/group_sort_by.dart';
import 'package:bungie_api/enums/group_type.dart';
import 'package:bungie_api/enums/groups_for_member_filter.dart';
import 'package:bungie_api/enums/host_guided_games_permission_level.dart';
import 'package:bungie_api/enums/ignore_length.dart';
import 'package:bungie_api/enums/ignore_status.dart';
import 'package:bungie_api/enums/item_bind_status.dart';
import 'package:bungie_api/enums/item_location.dart';
import 'package:bungie_api/enums/item_perk_visibility.dart';
import 'package:bungie_api/enums/item_state.dart';
import 'package:bungie_api/enums/membership_option.dart';
import 'package:bungie_api/enums/opt_in_flags.dart';
import 'package:bungie_api/enums/period_type.dart';
import 'package:bungie_api/enums/platform_error_codes.dart';
import 'package:bungie_api/enums/platform_friend_type.dart';
import 'package:bungie_api/enums/plug_availability_mode.dart';
import 'package:bungie_api/enums/plug_ui_styles.dart';
import 'package:bungie_api/enums/presence_online_state_flags.dart';
import 'package:bungie_api/enums/presence_status.dart';
import 'package:bungie_api/enums/runtime_group_member_type.dart';
import 'package:bungie_api/enums/socket_plug_sources.dart';
import 'package:bungie_api/enums/socket_type_action_type.dart';
import 'package:bungie_api/enums/special_item_type.dart';
import 'package:bungie_api/enums/tier_type.dart';
import 'package:bungie_api/enums/transfer_statuses.dart';
import 'package:bungie_api/enums/trending_entry_type.dart';
import 'package:bungie_api/enums/unit_type.dart';
import 'package:bungie_api/enums/vendor_display_category_sort_order.dart';
import 'package:bungie_api/enums/vendor_interaction_type.dart';
import 'package:bungie_api/enums/vendor_item_status.dart';
import 'package:bungie_api/exceptions.dart';
import 'package:bungie_api/fireteam.dart';
import 'package:bungie_api/forum.dart';
import 'package:bungie_api/forums.dart';
import 'package:bungie_api/getavailablelocales.dart';
import 'package:bungie_api/globalalerts.dart';
import 'package:bungie_api/groupsv2.dart';
import 'package:bungie_api/groupv2.dart';
import 'package:bungie_api/helpers/base_bungie_net_response.dart';
import 'package:bungie_api/helpers/bungie_net_token.dart';
import 'package:bungie_api/helpers/http.dart';
import 'package:bungie_api/helpers/oauth.dart';
import 'package:bungie_api/ignores.dart';
import 'package:bungie_api/interpolation.dart';
import 'package:bungie_api/links.dart';
import 'package:bungie_api/models/api_usage.dart';
import 'package:bungie_api/models/application.dart';
import 'package:bungie_api/models/application_developer.dart';
import 'package:bungie_api/models/awa_authorization_result.dart';
import 'package:bungie_api/models/awa_initialize_response.dart';
import 'package:bungie_api/models/awa_permission_requested.dart';
import 'package:bungie_api/models/awa_user_response.dart';
import 'package:bungie_api/models/bungie_friend.dart';
import 'package:bungie_api/models/bungie_friend_list_response.dart';
import 'package:bungie_api/models/bungie_friend_request_list_response.dart';
import 'package:bungie_api/models/clan_banner.dart';
import 'package:bungie_api/models/clan_banner_decal.dart';
import 'package:bungie_api/models/clan_banner_source.dart';
import 'package:bungie_api/models/comment_summary.dart';
import 'package:bungie_api/models/component_response.dart';
import 'package:bungie_api/models/content_item_public_contract.dart';
import 'package:bungie_api/models/content_preview.dart';
import 'package:bungie_api/models/content_representation.dart';
import 'package:bungie_api/models/content_type_default_value.dart';
import 'package:bungie_api/models/content_type_description.dart';
import 'package:bungie_api/models/content_type_property.dart';
import 'package:bungie_api/models/content_type_property_section.dart';
import 'package:bungie_api/models/core_setting.dart';
import 'package:bungie_api/models/core_settings_configuration.dart';
import 'package:bungie_api/models/core_system.dart';
import 'package:bungie_api/models/cross_save_user_membership.dart';
import 'package:bungie_api/models/datapoint.dart';
import 'package:bungie_api/models/date_range.dart';
import 'package:bungie_api/models/destiny2_core_settings.dart';
import 'package:bungie_api/models/destiny_action_request.dart';
import 'package:bungie_api/models/destiny_activity.dart';
import 'package:bungie_api/models/destiny_activity_challenge_definition.dart';
import 'package:bungie_api/models/destiny_activity_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_art_element_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_connection_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_display_objective_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_display_progression_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_list_entry_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_node_activity_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_node_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_node_featuring_state_definition.dart';
import 'package:bungie_api/models/destiny_activity_graph_node_state_entry.dart';
import 'package:bungie_api/models/destiny_activity_guided_block_definition.dart';
import 'package:bungie_api/models/destiny_activity_history_results.dart';
import 'package:bungie_api/models/destiny_activity_insertion_point_definition.dart';
import 'package:bungie_api/models/destiny_activity_loadout_requirement.dart';
import 'package:bungie_api/models/destiny_activity_loadout_requirement_set.dart';
import 'package:bungie_api/models/destiny_activity_matchmaking_block_definition.dart';
import 'package:bungie_api/models/destiny_activity_mode_definition.dart';
import 'package:bungie_api/models/destiny_activity_modifier_definition.dart';
import 'package:bungie_api/models/destiny_activity_modifier_reference_definition.dart';
import 'package:bungie_api/models/destiny_activity_playlist_item_definition.dart';
import 'package:bungie_api/models/destiny_activity_reward_definition.dart';
import 'package:bungie_api/models/destiny_activity_type_definition.dart';
import 'package:bungie_api/models/destiny_activity_unlock_string_definition.dart';
import 'package:bungie_api/models/destiny_aggregate_activity_results.dart';
import 'package:bungie_api/models/destiny_aggregate_activity_stats.dart';
import 'package:bungie_api/models/destiny_animation_reference.dart';
import 'package:bungie_api/models/destiny_art_dye_reference.dart';
import 'package:bungie_api/models/destiny_artifact_character_scoped.dart';
import 'package:bungie_api/models/destiny_artifact_definition.dart';
import 'package:bungie_api/models/destiny_artifact_profile_scoped.dart';
import 'package:bungie_api/models/destiny_artifact_tier.dart';
import 'package:bungie_api/models/destiny_artifact_tier_definition.dart';
import 'package:bungie_api/models/destiny_artifact_tier_item.dart';
import 'package:bungie_api/models/destiny_artifact_tier_item_definition.dart';
import 'package:bungie_api/models/destiny_base_item_component_set_ofint32.dart';
import 'package:bungie_api/models/destiny_base_item_component_set_ofint64.dart';
import 'package:bungie_api/models/destiny_base_item_component_set_ofuint32.dart';
import 'package:bungie_api/models/destiny_breaker_type_definition.dart';
import 'package:bungie_api/models/destiny_bubble_definition.dart';
import 'package:bungie_api/models/destiny_challenge_status.dart';
import 'package:bungie_api/models/destiny_character_action_request.dart';
import 'package:bungie_api/models/destiny_character_activities_component.dart';
import 'package:bungie_api/models/destiny_character_component.dart';
import 'package:bungie_api/models/destiny_character_customization.dart';
import 'package:bungie_api/models/destiny_character_peer_view.dart';
import 'package:bungie_api/models/destiny_character_progression_component.dart';
import 'package:bungie_api/models/destiny_character_records_component.dart';
import 'package:bungie_api/models/destiny_character_render_component.dart';
import 'package:bungie_api/models/destiny_character_response.dart';
import 'package:bungie_api/models/destiny_checklist_definition.dart';
import 'package:bungie_api/models/destiny_checklist_entry_definition.dart';
import 'package:bungie_api/models/destiny_clan_aggregate_stat.dart';
import 'package:bungie_api/models/destiny_class_definition.dart';
import 'package:bungie_api/models/destiny_collectible_acquisition_block.dart';
import 'package:bungie_api/models/destiny_collectible_component.dart';
import 'package:bungie_api/models/destiny_collectible_definition.dart';
import 'package:bungie_api/models/destiny_collectible_node_detail_response.dart';
import 'package:bungie_api/models/destiny_collectible_state_block.dart';
import 'package:bungie_api/models/destiny_collectibles_component.dart';
import 'package:bungie_api/models/destiny_color.dart';
import 'package:bungie_api/models/destiny_craftable_component.dart';
import 'package:bungie_api/models/destiny_craftable_socket_component.dart';
import 'package:bungie_api/models/destiny_craftable_socket_plug_component.dart';
import 'package:bungie_api/models/destiny_craftables_component.dart';
import 'package:bungie_api/models/destiny_currencies_component.dart';
import 'package:bungie_api/models/destiny_damage_type_definition.dart';
import 'package:bungie_api/models/destiny_definition.dart';
import 'package:bungie_api/models/destiny_derived_item_category_definition.dart';
import 'package:bungie_api/models/destiny_derived_item_definition.dart';
import 'package:bungie_api/models/destiny_destination_bubble_setting_definition.dart';
import 'package:bungie_api/models/destiny_destination_definition.dart';
import 'package:bungie_api/models/destiny_display_category_definition.dart';
import 'package:bungie_api/models/destiny_display_properties_definition.dart';
import 'package:bungie_api/models/destiny_energy_capacity_entry.dart';
import 'package:bungie_api/models/destiny_energy_cost_entry.dart';
import 'package:bungie_api/models/destiny_energy_type_definition.dart';
import 'package:bungie_api/models/destiny_entity_search_result.dart';
import 'package:bungie_api/models/destiny_entity_search_result_item.dart';
import 'package:bungie_api/models/destiny_environment_location_mapping.dart';
import 'package:bungie_api/models/destiny_equip_item_result.dart';
import 'package:bungie_api/models/destiny_equip_item_results.dart';
import 'package:bungie_api/models/destiny_equipment_slot_definition.dart';
import 'package:bungie_api/models/destiny_equipping_block_definition.dart';
import 'package:bungie_api/models/destiny_error_profile.dart';
import 'package:bungie_api/models/destiny_faction_definition.dart';
import 'package:bungie_api/models/destiny_faction_progression.dart';
import 'package:bungie_api/models/destiny_faction_vendor_definition.dart';
import 'package:bungie_api/models/destiny_gear_art_arrangement_reference.dart';
import 'package:bungie_api/models/destiny_gender_definition.dart';
import 'package:bungie_api/models/destiny_historical_stats_account_result.dart';
import 'package:bungie_api/models/destiny_historical_stats_activity.dart';
import 'package:bungie_api/models/destiny_historical_stats_by_period.dart';
import 'package:bungie_api/models/destiny_historical_stats_definition.dart';
import 'package:bungie_api/models/destiny_historical_stats_per_character.dart';
import 'package:bungie_api/models/destiny_historical_stats_period_group.dart';
import 'package:bungie_api/models/destiny_historical_stats_results.dart';
import 'package:bungie_api/models/destiny_historical_stats_value.dart';
import 'package:bungie_api/models/destiny_historical_stats_value_pair.dart';
import 'package:bungie_api/models/destiny_historical_stats_with_merged.dart';
import 'package:bungie_api/models/destiny_historical_weapon_stats.dart';
import 'package:bungie_api/models/destiny_historical_weapon_stats_data.dart';
import 'package:bungie_api/models/destiny_icon_sequence_definition.dart';
import 'package:bungie_api/models/destiny_insert_plug_action_definition.dart';
import 'package:bungie_api/models/destiny_insert_plugs_action_request.dart';
import 'package:bungie_api/models/destiny_insert_plugs_free_action_request.dart';
import 'package:bungie_api/models/destiny_insert_plugs_request_entry.dart';
import 'package:bungie_api/models/destiny_inventory_bucket_definition.dart';
import 'package:bungie_api/models/destiny_inventory_component.dart';
import 'package:bungie_api/models/destiny_inventory_item_definition.dart';
import 'package:bungie_api/models/destiny_inventory_item_stat_definition.dart';
import 'package:bungie_api/models/destiny_item_action_block_definition.dart';
import 'package:bungie_api/models/destiny_item_action_request.dart';
import 'package:bungie_api/models/destiny_item_action_required_item_definition.dart';
import 'package:bungie_api/models/destiny_item_category_definition.dart';
import 'package:bungie_api/models/destiny_item_change_response.dart';
import 'package:bungie_api/models/destiny_item_component.dart';
import 'package:bungie_api/models/destiny_item_component_set_ofint32.dart';
import 'package:bungie_api/models/destiny_item_component_set_ofint64.dart';
import 'package:bungie_api/models/destiny_item_component_set_ofuint32.dart';
import 'package:bungie_api/models/destiny_item_crafting_block_bonus_plug_definition.dart';
import 'package:bungie_api/models/destiny_item_crafting_block_definition.dart';
import 'package:bungie_api/models/destiny_item_creation_entry_level_definition.dart';
import 'package:bungie_api/models/destiny_item_gearset_block_definition.dart';
import 'package:bungie_api/models/destiny_item_instance_component.dart';
import 'package:bungie_api/models/destiny_item_instance_energy.dart';
import 'package:bungie_api/models/destiny_item_intrinsic_socket_entry_definition.dart';
import 'package:bungie_api/models/destiny_item_inventory_block_definition.dart';
import 'package:bungie_api/models/destiny_item_investment_stat_definition.dart';
import 'package:bungie_api/models/destiny_item_metric_block_definition.dart';
import 'package:bungie_api/models/destiny_item_objective_block_definition.dart';
import 'package:bungie_api/models/destiny_item_objectives_component.dart';
import 'package:bungie_api/models/destiny_item_peer_view.dart';
import 'package:bungie_api/models/destiny_item_perk_entry_definition.dart';
import 'package:bungie_api/models/destiny_item_perks_component.dart';
import 'package:bungie_api/models/destiny_item_plug.dart';
import 'package:bungie_api/models/destiny_item_plug_base.dart';
import 'package:bungie_api/models/destiny_item_plug_component.dart';
import 'package:bungie_api/models/destiny_item_plug_definition.dart';
import 'package:bungie_api/models/destiny_item_plug_objectives_component.dart';
import 'package:bungie_api/models/destiny_item_preview_block_definition.dart';
import 'package:bungie_api/models/destiny_item_quality_block_definition.dart';
import 'package:bungie_api/models/destiny_item_quantity.dart';
import 'package:bungie_api/models/destiny_item_render_component.dart';
import 'package:bungie_api/models/destiny_item_response.dart';
import 'package:bungie_api/models/destiny_item_reusable_plugs_component.dart';
import 'package:bungie_api/models/destiny_item_sack_block_definition.dart';
import 'package:bungie_api/models/destiny_item_set_action_request.dart';
import 'package:bungie_api/models/destiny_item_set_block_definition.dart';
import 'package:bungie_api/models/destiny_item_set_block_entry_definition.dart';
import 'package:bungie_api/models/destiny_item_socket_block_definition.dart';
import 'package:bungie_api/models/destiny_item_socket_category_definition.dart';
import 'package:bungie_api/models/destiny_item_socket_entry_definition.dart';
import 'package:bungie_api/models/destiny_item_socket_entry_plug_item_definition.dart';
import 'package:bungie_api/models/destiny_item_socket_entry_plug_item_randomized_definition.dart';
import 'package:bungie_api/models/destiny_item_socket_state.dart';
import 'package:bungie_api/models/destiny_item_sockets_component.dart';
import 'package:bungie_api/models/destiny_item_source_block_definition.dart';
import 'package:bungie_api/models/destiny_item_source_definition.dart';
import 'package:bungie_api/models/destiny_item_stat_block_definition.dart';
import 'package:bungie_api/models/destiny_item_state_request.dart';
import 'package:bungie_api/models/destiny_item_stats_component.dart';
import 'package:bungie_api/models/destiny_item_summary_block_definition.dart';
import 'package:bungie_api/models/destiny_item_talent_grid_block_definition.dart';
import 'package:bungie_api/models/destiny_item_talent_grid_component.dart';
import 'package:bungie_api/models/destiny_item_tier_type_definition.dart';
import 'package:bungie_api/models/destiny_item_tier_type_infusion_block.dart';
import 'package:bungie_api/models/destiny_item_tooltip_notification.dart';
import 'package:bungie_api/models/destiny_item_transfer_request.dart';
import 'package:bungie_api/models/destiny_item_translation_block_definition.dart';
import 'package:bungie_api/models/destiny_item_value_block_definition.dart';
import 'package:bungie_api/models/destiny_item_vendor_source_reference.dart';
import 'package:bungie_api/models/destiny_item_version_definition.dart';
import 'package:bungie_api/models/destiny_kiosk_item.dart';
import 'package:bungie_api/models/destiny_kiosks_component.dart';
import 'package:bungie_api/models/destiny_leaderboard.dart';
import 'package:bungie_api/models/destiny_leaderboard_entry.dart';
import 'package:bungie_api/models/destiny_leaderboard_results.dart';
import 'package:bungie_api/models/destiny_linked_graph_definition.dart';
import 'package:bungie_api/models/destiny_linked_graph_entry_definition.dart';
import 'package:bungie_api/models/destiny_linked_profiles_response.dart';
import 'package:bungie_api/models/destiny_location_definition.dart';
import 'package:bungie_api/models/destiny_location_release_definition.dart';
import 'package:bungie_api/models/destiny_lore_definition.dart';
import 'package:bungie_api/models/destiny_manifest.dart';
import 'package:bungie_api/models/destiny_material_requirement.dart';
import 'package:bungie_api/models/destiny_material_requirement_set_definition.dart';
import 'package:bungie_api/models/destiny_medal_tier_definition.dart';
import 'package:bungie_api/models/destiny_metric_component.dart';
import 'package:bungie_api/models/destiny_metric_definition.dart';
import 'package:bungie_api/models/destiny_metrics_component.dart';
import 'package:bungie_api/models/destiny_milestone.dart';
import 'package:bungie_api/models/destiny_milestone_activity.dart';
import 'package:bungie_api/models/destiny_milestone_activity_completion_status.dart';
import 'package:bungie_api/models/destiny_milestone_activity_definition.dart';
import 'package:bungie_api/models/destiny_milestone_activity_phase.dart';
import 'package:bungie_api/models/destiny_milestone_activity_variant.dart';
import 'package:bungie_api/models/destiny_milestone_activity_variant_definition.dart';
import 'package:bungie_api/models/destiny_milestone_challenge_activity.dart';
import 'package:bungie_api/models/destiny_milestone_challenge_activity_definition.dart';
import 'package:bungie_api/models/destiny_milestone_challenge_activity_graph_node_entry.dart';
import 'package:bungie_api/models/destiny_milestone_challenge_activity_phase.dart';
import 'package:bungie_api/models/destiny_milestone_challenge_definition.dart';
import 'package:bungie_api/models/destiny_milestone_content.dart';
import 'package:bungie_api/models/destiny_milestone_content_item_category.dart';
import 'package:bungie_api/models/destiny_milestone_definition.dart';
import 'package:bungie_api/models/destiny_milestone_quest.dart';
import 'package:bungie_api/models/destiny_milestone_quest_definition.dart';
import 'package:bungie_api/models/destiny_milestone_quest_reward_item.dart';
import 'package:bungie_api/models/destiny_milestone_quest_rewards_definition.dart';
import 'package:bungie_api/models/destiny_milestone_reward_category.dart';
import 'package:bungie_api/models/destiny_milestone_reward_category_definition.dart';
import 'package:bungie_api/models/destiny_milestone_reward_entry.dart';
import 'package:bungie_api/models/destiny_milestone_reward_entry_definition.dart';
import 'package:bungie_api/models/destiny_milestone_value_definition.dart';
import 'package:bungie_api/models/destiny_milestone_vendor.dart';
import 'package:bungie_api/models/destiny_milestone_vendor_definition.dart';
import 'package:bungie_api/models/destiny_node_activation_requirement.dart';
import 'package:bungie_api/models/destiny_node_socket_replace_response.dart';
import 'package:bungie_api/models/destiny_node_step_definition.dart';
import 'package:bungie_api/models/destiny_objective_definition.dart';
import 'package:bungie_api/models/destiny_objective_display_properties.dart';
import 'package:bungie_api/models/destiny_objective_perk_entry_definition.dart';
import 'package:bungie_api/models/destiny_objective_progress.dart';
import 'package:bungie_api/models/destiny_objective_stat_entry_definition.dart';
import 'package:bungie_api/models/destiny_parent_item_override.dart';
import 'package:bungie_api/models/destiny_perk_reference.dart';
import 'package:bungie_api/models/destiny_place_definition.dart';
import 'package:bungie_api/models/destiny_platform_silver_component.dart';
import 'package:bungie_api/models/destiny_player.dart';
import 'package:bungie_api/models/destiny_plug_item_crafting_requirements.dart';
import 'package:bungie_api/models/destiny_plug_item_crafting_unlock_requirement.dart';
import 'package:bungie_api/models/destiny_plug_rule_definition.dart';
import 'package:bungie_api/models/destiny_plug_set_definition.dart';
import 'package:bungie_api/models/destiny_plug_sets_component.dart';
import 'package:bungie_api/models/destiny_plug_whitelist_entry_definition.dart';
import 'package:bungie_api/models/destiny_position_definition.dart';
import 'package:bungie_api/models/destiny_post_game_carnage_report_data.dart';
import 'package:bungie_api/models/destiny_post_game_carnage_report_entry.dart';
import 'package:bungie_api/models/destiny_post_game_carnage_report_extended_data.dart';
import 'package:bungie_api/models/destiny_post_game_carnage_report_team_entry.dart';
import 'package:bungie_api/models/destiny_postmaster_transfer_request.dart';
import 'package:bungie_api/models/destiny_power_cap_definition.dart';
import 'package:bungie_api/models/destiny_presentation_child_block.dart';
import 'package:bungie_api/models/destiny_presentation_node_base_definition.dart';
import 'package:bungie_api/models/destiny_presentation_node_child_entry.dart';
import 'package:bungie_api/models/destiny_presentation_node_child_entry_base.dart';
import 'package:bungie_api/models/destiny_presentation_node_children_block.dart';
import 'package:bungie_api/models/destiny_presentation_node_collectible_child_entry.dart';
import 'package:bungie_api/models/destiny_presentation_node_component.dart';
import 'package:bungie_api/models/destiny_presentation_node_craftable_child_entry.dart';
import 'package:bungie_api/models/destiny_presentation_node_definition.dart';
import 'package:bungie_api/models/destiny_presentation_node_metric_child_entry.dart';
import 'package:bungie_api/models/destiny_presentation_node_record_child_entry.dart';
import 'package:bungie_api/models/destiny_presentation_node_requirements_block.dart';
import 'package:bungie_api/models/destiny_presentation_nodes_component.dart';
import 'package:bungie_api/models/destiny_profile_collectibles_component.dart';
import 'package:bungie_api/models/destiny_profile_component.dart';
import 'package:bungie_api/models/destiny_profile_progression_component.dart';
import 'package:bungie_api/models/destiny_profile_records_component.dart';
import 'package:bungie_api/models/destiny_profile_response.dart';
import 'package:bungie_api/models/destiny_profile_transitory_component.dart';
import 'package:bungie_api/models/destiny_profile_transitory_current_activity.dart';
import 'package:bungie_api/models/destiny_profile_transitory_joinability.dart';
import 'package:bungie_api/models/destiny_profile_transitory_party_member.dart';
import 'package:bungie_api/models/destiny_profile_transitory_tracking_entry.dart';
import 'package:bungie_api/models/destiny_profile_user_info_card.dart';
import 'package:bungie_api/models/destiny_progression.dart';
import 'package:bungie_api/models/destiny_progression_definition.dart';
import 'package:bungie_api/models/destiny_progression_display_properties_definition.dart';
import 'package:bungie_api/models/destiny_progression_level_requirement_definition.dart';
import 'package:bungie_api/models/destiny_progression_mapping_definition.dart';
import 'package:bungie_api/models/destiny_progression_reset_entry.dart';
import 'package:bungie_api/models/destiny_progression_reward_definition.dart';
import 'package:bungie_api/models/destiny_progression_reward_item_quantity.dart';
import 'package:bungie_api/models/destiny_progression_step_definition.dart';
import 'package:bungie_api/models/destiny_public_activity_status.dart';
import 'package:bungie_api/models/destiny_public_milestone.dart';
import 'package:bungie_api/models/destiny_public_milestone_activity.dart';
import 'package:bungie_api/models/destiny_public_milestone_activity_variant.dart';
import 'package:bungie_api/models/destiny_public_milestone_challenge.dart';
import 'package:bungie_api/models/destiny_public_milestone_challenge_activity.dart';
import 'package:bungie_api/models/destiny_public_milestone_quest.dart';
import 'package:bungie_api/models/destiny_public_milestone_vendor.dart';
import 'package:bungie_api/models/destiny_public_vendor_component.dart';
import 'package:bungie_api/models/destiny_public_vendor_sale_item_component.dart';
import 'package:bungie_api/models/destiny_public_vendors_response.dart';
import 'package:bungie_api/models/destiny_quest_status.dart';
import 'package:bungie_api/models/destiny_race_definition.dart';
import 'package:bungie_api/models/destiny_record_completion_block.dart';
import 'package:bungie_api/models/destiny_record_component.dart';
import 'package:bungie_api/models/destiny_record_definition.dart';
import 'package:bungie_api/models/destiny_record_expiration_block.dart';
import 'package:bungie_api/models/destiny_record_interval_block.dart';
import 'package:bungie_api/models/destiny_record_interval_objective.dart';
import 'package:bungie_api/models/destiny_record_interval_rewards.dart';
import 'package:bungie_api/models/destiny_record_title_block.dart';
import 'package:bungie_api/models/destiny_records_component.dart';
import 'package:bungie_api/models/destiny_report_offense_pgcr_request.dart';
import 'package:bungie_api/models/destiny_report_reason_category_definition.dart';
import 'package:bungie_api/models/destiny_report_reason_definition.dart';
import 'package:bungie_api/models/destiny_reward_source_definition.dart';
import 'package:bungie_api/models/destiny_sandbox_perk_definition.dart';
import 'package:bungie_api/models/destiny_scored_presentation_node_base_definition.dart';
import 'package:bungie_api/models/destiny_season_definition.dart';
import 'package:bungie_api/models/destiny_season_pass_definition.dart';
import 'package:bungie_api/models/destiny_season_preview_definition.dart';
import 'package:bungie_api/models/destiny_season_preview_image_definition.dart';
import 'package:bungie_api/models/destiny_socket_category_definition.dart';
import 'package:bungie_api/models/destiny_socket_type_definition.dart';
import 'package:bungie_api/models/destiny_socket_type_scalar_material_requirement_entry.dart';
import 'package:bungie_api/models/destiny_stat.dart';
import 'package:bungie_api/models/destiny_stat_definition.dart';
import 'package:bungie_api/models/destiny_stat_display_definition.dart';
import 'package:bungie_api/models/destiny_stat_group_definition.dart';
import 'package:bungie_api/models/destiny_stat_override_definition.dart';
import 'package:bungie_api/models/destiny_string_variables_component.dart';
import 'package:bungie_api/models/destiny_talent_exclusive_group.dart';
import 'package:bungie_api/models/destiny_talent_grid_definition.dart';
import 'package:bungie_api/models/destiny_talent_node.dart';
import 'package:bungie_api/models/destiny_talent_node_category.dart';
import 'package:bungie_api/models/destiny_talent_node_definition.dart';
import 'package:bungie_api/models/destiny_talent_node_exclusive_set_definition.dart';
import 'package:bungie_api/models/destiny_talent_node_stat_block.dart';
import 'package:bungie_api/models/destiny_talent_node_step_groups.dart';
import 'package:bungie_api/models/destiny_trait_category_definition.dart';
import 'package:bungie_api/models/destiny_trait_definition.dart';
import 'package:bungie_api/models/destiny_unlock_definition.dart';
import 'package:bungie_api/models/destiny_unlock_expression_definition.dart';
import 'package:bungie_api/models/destiny_unlock_status.dart';
import 'package:bungie_api/models/destiny_unlock_value_definition.dart';
import 'package:bungie_api/models/destiny_vendor_accepted_item_definition.dart';
import 'package:bungie_api/models/destiny_vendor_action_definition.dart';
import 'package:bungie_api/models/destiny_vendor_base_component.dart';
import 'package:bungie_api/models/destiny_vendor_categories_component.dart';
import 'package:bungie_api/models/destiny_vendor_category.dart';
import 'package:bungie_api/models/destiny_vendor_category_entry_definition.dart';
import 'package:bungie_api/models/destiny_vendor_category_overlay_definition.dart';
import 'package:bungie_api/models/destiny_vendor_component.dart';
import 'package:bungie_api/models/destiny_vendor_definition.dart';
import 'package:bungie_api/models/destiny_vendor_display_properties_definition.dart';
import 'package:bungie_api/models/destiny_vendor_group.dart';
import 'package:bungie_api/models/destiny_vendor_group_component.dart';
import 'package:bungie_api/models/destiny_vendor_group_definition.dart';
import 'package:bungie_api/models/destiny_vendor_group_reference.dart';
import 'package:bungie_api/models/destiny_vendor_interaction_definition.dart';
import 'package:bungie_api/models/destiny_vendor_interaction_reply_definition.dart';
import 'package:bungie_api/models/destiny_vendor_interaction_sack_entry_definition.dart';
import 'package:bungie_api/models/destiny_vendor_inventory_flyout_bucket_definition.dart';
import 'package:bungie_api/models/destiny_vendor_inventory_flyout_definition.dart';
import 'package:bungie_api/models/destiny_vendor_item_definition.dart';
import 'package:bungie_api/models/destiny_vendor_item_quantity.dart';
import 'package:bungie_api/models/destiny_vendor_item_socket_override.dart';
import 'package:bungie_api/models/destiny_vendor_location_definition.dart';
import 'package:bungie_api/models/destiny_vendor_receipt.dart';
import 'package:bungie_api/models/destiny_vendor_receipts_component.dart';
import 'package:bungie_api/models/destiny_vendor_requirement_display_entry_definition.dart';
import 'package:bungie_api/models/destiny_vendor_response.dart';
import 'package:bungie_api/models/destiny_vendor_sale_item_action_block_definition.dart';
import 'package:bungie_api/models/destiny_vendor_sale_item_base_component.dart';
import 'package:bungie_api/models/destiny_vendor_sale_item_component.dart';
import 'package:bungie_api/models/destiny_vendor_sale_item_set_component_of_destiny_public_vendor_sale_item_component.dart';
import 'package:bungie_api/models/destiny_vendor_sale_item_set_component_of_destiny_vendor_sale_item_component.dart';
import 'package:bungie_api/models/destiny_vendor_service_definition.dart';
import 'package:bungie_api/models/destiny_vendors_response.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_instance_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_objectives_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_perks_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_plug_objectives_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_render_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_reusable_plugs_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_sockets_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_stats_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_item_talent_grid_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint32_and_destiny_vendor_sale_item_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_character_activities_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_character_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_character_progression_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_character_records_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_character_render_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_collectibles_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_craftables_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_currencies_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_inventory_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_instance_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_objectives_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_perks_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_plug_objectives_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_render_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_reusable_plugs_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_sockets_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_stats_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_item_talent_grid_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_kiosks_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_plug_sets_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_presentation_nodes_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofint64_and_destiny_string_variables_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_instance_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_objectives_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_perks_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_plug_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_plug_objectives_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_render_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_reusable_plugs_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_sockets_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_stats_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_item_talent_grid_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_public_vendor_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_vendor_categories_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_destiny_vendor_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_personal_destiny_vendor_sale_item_set_component.dart';
import 'package:bungie_api/models/dictionary_component_response_ofuint32_and_public_destiny_vendor_sale_item_set_component.dart';
import 'package:bungie_api/models/dye_reference.dart';
import 'package:bungie_api/models/email_opt_in_definition.dart';
import 'package:bungie_api/models/email_setting_localization.dart';
import 'package:bungie_api/models/email_setting_subscription_localization.dart';
import 'package:bungie_api/models/email_settings.dart';
import 'package:bungie_api/models/email_subscription_definition.dart';
import 'package:bungie_api/models/email_view_definition.dart';
import 'package:bungie_api/models/email_view_definition_setting.dart';
import 'package:bungie_api/models/entity_action_result.dart';
import 'package:bungie_api/models/exact_search_request.dart';
import 'package:bungie_api/models/fireteam_member.dart';
import 'package:bungie_api/models/fireteam_response.dart';
import 'package:bungie_api/models/fireteam_summary.dart';
import 'package:bungie_api/models/fireteam_user_info_card.dart';
import 'package:bungie_api/models/forum_recruitment_detail.dart';
import 'package:bungie_api/models/gear_asset_data_base_definition.dart';
import 'package:bungie_api/models/general_user.dart';
import 'package:bungie_api/models/get_credential_types_for_account_response.dart';
import 'package:bungie_api/models/get_groups_for_member_response.dart';
import 'package:bungie_api/models/global_alert.dart';
import 'package:bungie_api/models/group_application_list_request.dart';
import 'package:bungie_api/models/group_application_request.dart';
import 'package:bungie_api/models/group_application_response.dart';
import 'package:bungie_api/models/group_ban.dart';
import 'package:bungie_api/models/group_ban_request.dart';
import 'package:bungie_api/models/group_edit_action.dart';
import 'package:bungie_api/models/group_features.dart';
import 'package:bungie_api/models/group_member.dart';
import 'package:bungie_api/models/group_member_application.dart';
import 'package:bungie_api/models/group_member_leave_result.dart';
import 'package:bungie_api/models/group_membership.dart';
import 'package:bungie_api/models/group_membership_base.dart';
import 'package:bungie_api/models/group_membership_search_response.dart';
import 'package:bungie_api/models/group_name_search_request.dart';
import 'package:bungie_api/models/group_optional_conversation.dart';
import 'package:bungie_api/models/group_optional_conversation_add_request.dart';
import 'package:bungie_api/models/group_optional_conversation_edit_request.dart';
import 'package:bungie_api/models/group_options_edit_action.dart';
import 'package:bungie_api/models/group_potential_member.dart';
import 'package:bungie_api/models/group_potential_membership.dart';
import 'package:bungie_api/models/group_potential_membership_search_response.dart';
import 'package:bungie_api/models/group_query.dart';
import 'package:bungie_api/models/group_response.dart';
import 'package:bungie_api/models/group_search_response.dart';
import 'package:bungie_api/models/group_theme.dart';
import 'package:bungie_api/models/group_user_base.dart';
import 'package:bungie_api/models/group_user_info_card.dart';
import 'package:bungie_api/models/group_v2.dart';
import 'package:bungie_api/models/group_v2_card.dart';
import 'package:bungie_api/models/group_v2_clan_info.dart';
import 'package:bungie_api/models/group_v2_clan_info_and_investment.dart';
import 'package:bungie_api/models/hard_linked_user_membership.dart';
import 'package:bungie_api/models/hyperlink_reference.dart';
import 'package:bungie_api/models/ignore_response.dart';
import 'package:bungie_api/models/image_pyramid_entry.dart';
import 'package:bungie_api/models/interpolation_point.dart';
import 'package:bungie_api/models/interpolation_point_float.dart';
import 'package:bungie_api/models/inventory_changed_response.dart';
import 'package:bungie_api/models/paged_query.dart';
import 'package:bungie_api/models/partner_offer_claim_request.dart';
import 'package:bungie_api/models/partner_offer_history_response.dart';
import 'package:bungie_api/models/partner_offer_sku_history_response.dart';
import 'package:bungie_api/models/personal_destiny_vendor_sale_item_set_component.dart';
import 'package:bungie_api/models/platform_friend.dart';
import 'package:bungie_api/models/platform_friend_response.dart';
import 'package:bungie_api/models/poll_response.dart';
import 'package:bungie_api/models/poll_result.dart';
import 'package:bungie_api/models/post_response.dart';
import 'package:bungie_api/models/post_search_response.dart';
import 'package:bungie_api/models/public_destiny_vendor_sale_item_set_component.dart';
import 'package:bungie_api/models/schema_record_state_block.dart';
import 'package:bungie_api/models/search_result.dart';
import 'package:bungie_api/models/search_result_of_content_item_public_contract.dart';
import 'package:bungie_api/models/search_result_of_destiny_entity_search_result_item.dart';
import 'package:bungie_api/models/search_result_of_fireteam_response.dart';
import 'package:bungie_api/models/search_result_of_fireteam_summary.dart';
import 'package:bungie_api/models/search_result_of_group_ban.dart';
import 'package:bungie_api/models/search_result_of_group_member.dart';
import 'package:bungie_api/models/search_result_of_group_member_application.dart';
import 'package:bungie_api/models/search_result_of_group_membership.dart';
import 'package:bungie_api/models/search_result_of_group_potential_membership.dart';
import 'package:bungie_api/models/search_result_of_group_v2_card.dart';
import 'package:bungie_api/models/search_result_of_post_response.dart';
import 'package:bungie_api/models/search_result_of_trending_entry.dart';
import 'package:bungie_api/models/series.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_character_activities_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_character_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_character_progression_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_character_records_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_character_render_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_collectibles_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_currencies_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_inventory_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_instance_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_objectives_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_perks_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_plug_objectives_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_render_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_reusable_plugs_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_sockets_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_stats_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_item_talent_grid_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_kiosks_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_metrics_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_platform_silver_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_plug_sets_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_presentation_nodes_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_profile_collectibles_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_profile_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_profile_progression_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_profile_records_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_profile_transitory_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_string_variables_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_vendor_categories_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_vendor_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_vendor_group_component.dart';
import 'package:bungie_api/models/single_component_response_of_destiny_vendor_receipts_component.dart';
import 'package:bungie_api/models/stream_info.dart';
import 'package:bungie_api/models/tag_metadata_definition.dart';
import 'package:bungie_api/models/tag_metadata_item.dart';
import 'package:bungie_api/models/tag_response.dart';
import 'package:bungie_api/models/trending_categories.dart';
import 'package:bungie_api/models/trending_category.dart';
import 'package:bungie_api/models/trending_detail.dart';
import 'package:bungie_api/models/trending_entry.dart';
import 'package:bungie_api/models/trending_entry_community_creation.dart';
import 'package:bungie_api/models/trending_entry_destiny_activity.dart';
import 'package:bungie_api/models/trending_entry_destiny_item.dart';
import 'package:bungie_api/models/trending_entry_destiny_ritual.dart';
import 'package:bungie_api/models/trending_entry_news.dart';
import 'package:bungie_api/models/trending_entry_support_article.dart';
import 'package:bungie_api/models/user_info_card.dart';
import 'package:bungie_api/models/user_membership.dart';
import 'package:bungie_api/models/user_membership_data.dart';
import 'package:bungie_api/models/user_search_prefix_request.dart';
import 'package:bungie_api/models/user_search_response.dart';
import 'package:bungie_api/models/user_search_response_detail.dart';
import 'package:bungie_api/models/user_theme.dart';
import 'package:bungie_api/models/user_to_user_context.dart';
import 'package:bungie_api/queries.dart';
import 'package:bungie_api/responses/api_usage_response.dart';
import 'package:bungie_api/responses/awa_authorization_result_response.dart';
import 'package:bungie_api/responses/awa_initialize_response_response.dart';
import 'package:bungie_api/responses/boolean_response.dart';
import 'package:bungie_api/responses/bungie_friend_list_response_response.dart';
import 'package:bungie_api/responses/bungie_friend_request_list_response_response.dart';
import 'package:bungie_api/responses/cedictionary_ofstring_andstring_response.dart';
import 'package:bungie_api/responses/celist_of_forum_recruitment_detail_response.dart';
import 'package:bungie_api/responses/celist_of_global_alert_response.dart';
import 'package:bungie_api/responses/celist_of_group_optional_conversation_response.dart';
import 'package:bungie_api/responses/celist_of_partner_offer_sku_history_response_response.dart';
import 'package:bungie_api/responses/clan_banner_source_response.dart';
import 'package:bungie_api/responses/content_item_public_contract_response.dart';
import 'package:bungie_api/responses/content_type_description_response.dart';
import 'package:bungie_api/responses/core_settings_configuration_response.dart';
import 'package:bungie_api/responses/destiny_activity_history_results_response.dart';
import 'package:bungie_api/responses/destiny_aggregate_activity_results_response.dart';
import 'package:bungie_api/responses/destiny_character_response_response.dart';
import 'package:bungie_api/responses/destiny_collectible_node_detail_response_response.dart';
import 'package:bungie_api/responses/destiny_definition_response.dart';
import 'package:bungie_api/responses/destiny_entity_search_result_response.dart';
import 'package:bungie_api/responses/destiny_equip_item_results_response.dart';
import 'package:bungie_api/responses/destiny_historical_stats_account_result_response.dart';
import 'package:bungie_api/responses/destiny_historical_stats_results_response.dart';
import 'package:bungie_api/responses/destiny_historical_weapon_stats_data_response.dart';
import 'package:bungie_api/responses/destiny_item_change_response_response.dart';
import 'package:bungie_api/responses/destiny_item_response_response.dart';
import 'package:bungie_api/responses/destiny_leaderboard_results_response.dart';
import 'package:bungie_api/responses/destiny_linked_profiles_response_response.dart';
import 'package:bungie_api/responses/destiny_manifest_response.dart';
import 'package:bungie_api/responses/destiny_milestone_content_response.dart';
import 'package:bungie_api/responses/destiny_milestone_response.dart';
import 'package:bungie_api/responses/destiny_post_game_carnage_report_data_response.dart';
import 'package:bungie_api/responses/destiny_profile_response_response.dart';
import 'package:bungie_api/responses/destiny_public_vendors_response_response.dart';
import 'package:bungie_api/responses/destiny_vendor_response_response.dart';
import 'package:bungie_api/responses/destiny_vendors_response_response.dart';
import 'package:bungie_api/responses/dictionary_ofint32_andstring_response.dart';
import 'package:bungie_api/responses/dictionary_ofstring_and_core_system_response.dart';
import 'package:bungie_api/responses/dictionary_ofuint32_and_destiny_public_milestone_response.dart';
import 'package:bungie_api/responses/fireteam_response_response.dart';
import 'package:bungie_api/responses/general_user_response.dart';
import 'package:bungie_api/responses/get_groups_for_member_response_response.dart';
import 'package:bungie_api/responses/group_application_response_response.dart';
import 'package:bungie_api/responses/group_member_leave_result_response.dart';
import 'package:bungie_api/responses/group_membership_search_response_response.dart';
import 'package:bungie_api/responses/group_potential_membership_search_response_response.dart';
import 'package:bungie_api/responses/group_response_response.dart';
import 'package:bungie_api/responses/group_search_response_response.dart';
import 'package:bungie_api/responses/hard_linked_user_membership_response.dart';
import 'package:bungie_api/responses/ienumerable_of_application_response.dart';
import 'package:bungie_api/responses/ienumerable_of_user_info_card_response.dart';
import 'package:bungie_api/responses/int32_response.dart';
import 'package:bungie_api/responses/int64_response.dart';
import 'package:bungie_api/responses/iread_only_collection_of_content_item_public_contract_response.dart';
import 'package:bungie_api/responses/list_of_destiny_clan_aggregate_stat_response.dart';
import 'package:bungie_api/responses/list_of_entity_action_result_response.dart';
import 'package:bungie_api/responses/list_of_get_credential_types_for_account_response_response.dart';
import 'package:bungie_api/responses/list_of_group_theme_response.dart';
import 'package:bungie_api/responses/list_of_group_v2_card_response.dart';
import 'package:bungie_api/responses/list_of_tag_response_response.dart';
import 'package:bungie_api/responses/list_of_user_theme_response.dart';
import 'package:bungie_api/responses/platform_friend_response_response.dart';
import 'package:bungie_api/responses/post_search_response_response.dart';
import 'package:bungie_api/responses/read_only_dictionary_ofstring_and_destiny_historical_stats_definition_response.dart';
import 'package:bungie_api/responses/search_result_of_content_item_public_contract_response.dart';
import 'package:bungie_api/responses/search_result_of_fireteam_response_response.dart';
import 'package:bungie_api/responses/search_result_of_fireteam_summary_response.dart';
import 'package:bungie_api/responses/search_result_of_group_ban_response.dart';
import 'package:bungie_api/responses/search_result_of_group_member_application_response.dart';
import 'package:bungie_api/responses/search_result_of_group_member_response.dart';
import 'package:bungie_api/responses/search_result_of_trending_entry_response.dart';
import 'package:bungie_api/responses/trending_categories_response.dart';
import 'package:bungie_api/responses/trending_detail_response.dart';
import 'package:bungie_api/responses/user_membership_data_response.dart';
import 'package:bungie_api/responses/user_search_response_response.dart';
import 'package:bungie_api/settings.dart';
import 'package:bungie_api/social.dart';
import 'package:bungie_api/tags.dart';
import 'package:bungie_api/tokens.dart';
import 'package:bungie_api/trending.dart';
import 'package:bungie_api/user.dart';
import 'package:bungie_api/usersystemoverrides.dart';

Author: LittleLightForDestiny
Source Code: https://github.com/LittleLightForDestiny/bungie-api-dart 
License: MIT license

#flutter #dart #api 

Bungie-api-dart: Dart Definitions for The Bungie.net API
Fabiola  Auma

Fabiola Auma

1656745200

Flutter Plugin: Accessing information About The Battery State on Tizen

plugins

This repo contains Flutter plugins maintained by the flutter-tizen team. We're in process of adding Tizen platform support to existing first and third-party plugins on pub.dev based on their popularity. If the plugin you're looking for isn't implemented for Tizen yet, consider filing an issue or creating a package by yourself. (We welcome your pull requests!)

To build Flutter applications with plugins, use the flutter-tizen tool.

For how to extend existing plugins for Tizen, see Writing custom platform-specific code and Federated plugins from the Flutter docs. If the original plugin uses the federated plugins approach, you can implement its platform interface either in Dart (inheriting directly) or C++ (using a fallback method channel).

List of packages

The "non-endorsed" status means that the plugin is not endorsed by the original author. In such case, you must set both foobar and foobar_tizen package dependencies in pubspec.yaml file to achieve full functionality.

Tizen packageFrontend packagePubEndorsed
audioplayers_tizenaudioplayers (3rd-party)pub packageNo
battery_plus_tizenbattery_plus (1st-party)pub packageNo
camera_tizencamera (1st-party)pub packageNo
connectivity_plus_tizenconnectivity_plus (1st-party)pub packageNo
device_info_plus_tizendevice_info_plus (1st-party)pub packageNo
flutter_tts_tizenflutter_tts (3rd-party)pub packageNo
geolocator_tizengeolocator (3rd-party)pub packageNo
google_maps_flutter_tizengoogle_maps_flutter (1st-party)pub packageNo
image_picker_tizenimage_picker (1st-party)pub packageNo
integration_test_tizenintegration_test (1st-party)pub packageNo
messageport_tizen(Tizen-only)pub packageN/A
network_info_plus_tizennetwork_info_plus (1st-party)pub packageNo
package_info_plus_tizenpackage_info_plus (1st-party)pub packageNo
path_provider_tizenpath_provider (1st-party)pub packageNo
permission_handler_tizenpermission_handler (3rd-party)pub packageNo
sensors_plus_tizensensors_plus (1st-party)pub packageNo
share_plus_tizenshare_plus (1st-party)pub packageNo
shared_preferences_tizenshared_preferences (1st-party)pub packageNo
sqflite_tizensqflite (3rd-party)pub packageNo
tizen_app_control(Tizen-only)pub packageN/A
tizen_app_manager(Tizen-only)pub packageN/A
tizen_audio_manager(Tizen-only)pub packageN/A
tizen_log(Tizen-only)pub packageN/A
tizen_notification(Tizen-only)pub packageN/A
tizen_package_manager(Tizen-only)pub packageN/A
url_launcher_tizenurl_launcher (1st-party)pub packageNo
video_player_tizenvideo_player (1st-party)pub packageNo
wakelock_tizenwakelock (3rd-party)pub packageNo
wearable_rotary(Tizen-only)pub packageN/A
webview_flutter_tizenwebview_flutter (1st-party)pub packageNo

Device limitations

Package nameWatchWatch
emulator
TVTV
emulator
Remarks
audioplayers_tizen✔️✔️⚠️⚠️Functional limitations (see README)
battery_plus_tizen✔️✔️❌❌No battery
camera_tizen❌❌❌❌No camera
connectivity_plus_tizen✔️⚠️✔️✔️Returns incorrect connection status
device_info_plus_tizen✔️✔️✔️✔️ 
flutter_tts_tizen✔️✔️✔️✔️ 
geolocator_tizen✔️✔️❌❌Not applicable for TV
google_maps_flutter_tizen❌❌✔️❌Dependent library unavailable
image_picker_tizen⚠️❌❌❌No camera
No file manager app
integration_test_tizen✔️✔️✔️✔️ 
messageport_tizen✔️✔️✔️✔️ 
network_info_plus_tizen✔️❌✔️❌API not supported on emulator
package_info_plus_tizen✔️✔️✔️✔️ 
path_provider_tizen✔️✔️✔️✔️ 
permission_handler_tizen✔️✔️⚠️⚠️Not applicable for TV
sensors_plus_tizen✔️✔️❌❌No sensor hardware
share_plus_tizen⚠️⚠️❌❌No SMS or e-mail app
shared_preferences_tizen✔️✔️✔️✔️ 
sqflite_tizen✔️✔️✔️✔️ 
tizen_app_control✔️✔️✔️✔️ 
tizen_app_manager✔️✔️✔️✔️ 
tizen_audio_manager✔️✔️✔️✔️ 
tizen_log✔️✔️❌❌Not applicable for TV
tizen_notification❌✔️✔️✔️API not supported
tizen_package_manager✔️✔️✔️✔️ 
url_launcher_tizen✔️❌✔️❌No browser app
video_player_tizen✔️✔️⚠️❌Functional limitations (see README)
TV emulator issue
wakelock_tizen✔️✔️❌❌Cannot override system display setting
wearable_rotary✔️✔️❌❌Not applicable for TV
webview_flutter_tizen❌❌✔️❌Dependent library unavailable

battery_tizen


Deprecation Notice

The battery plugin has been replaced by the Flutter Community Plus Plugins version, battery_plus. Consider migrating to battery_plus and its Tizen implementation battery_plus_tizen.


The Tizen implementation of battery.

Usage

This package is not an endorsed implementation of battery. Therefore, you have to include battery_tizen alongside battery as dependencies in your pubspec.yaml file.

dependencies:
  battery: ^2.0.1
  battery_tizen: ^2.0.2

Then you can import battery in your Dart code:

import 'package:battery/battery.dart';

For detailed usage, see https://pub.dev/packages/battery#usage.

Supported devices

  • Galaxy Watch series (running Tizen 4.0 or later)

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add battery_tizen

With Flutter:

 $ flutter pub add battery_tizen

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  battery_tizen: ^2.0.2

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

example/lib/main.dart

// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// ignore_for_file: public_member_api_docs

import 'dart:async';

import 'package:flutter/material.dart';
import 'package:battery/battery.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final Battery _battery = Battery();

  BatteryState? _batteryState;
  late StreamSubscription<BatteryState> _batteryStateSubscription;

  @override
  void initState() {
    super.initState();
    _batteryStateSubscription =
        _battery.onBatteryStateChanged.listen((BatteryState state) {
      setState(() {
        _batteryState = state;
      });
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Plugin example app'),
      ),
      body: Center(
        child: Text('$_batteryState'),
      ),
      floatingActionButton: FloatingActionButton(
        child: const Icon(Icons.battery_unknown),
        onPressed: () async {
          final int batteryLevel = await _battery.batteryLevel;
          // ignore: unawaited_futures
          showDialog<void>(
            context: context,
            builder: (_) => AlertDialog(
              content: Text('Battery: $batteryLevel%'),
              actions: <Widget>[
                TextButton(
                  child: const Text('OK'),
                  onPressed: () {
                    Navigator.pop(context);
                  },
                )
              ],
            ),
          );
        },
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    if (_batteryStateSubscription != null) {
      _batteryStateSubscription.cancel();
    }
  }
}

Author: flutter-tizen
Source code: https://github.com/flutter-tizen/plugins
License:

#dart #flutter 

Flutter Plugin: Accessing information About The Battery State on Tizen
Daniel  Hughes

Daniel Hughes

1656745200

AWS API Client for Amazon Machine Learning

High-level APIs for Amazon Web Services (AWS) in Dart

Development

Generate Dart APIs

Generated sources are checked into the repository. To generate the sources, run the following command at the root of the generator folder:

dart bin/generate.dart generate

All commands in generate.dart has the --help command available for more information on usage.

Published generated packages

TODO

  • Implement EC2 protocol

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add aws_machinelearning_api

With Flutter:

 $ flutter pub add aws_machinelearning_api

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  aws_machinelearning_api: ^1.2.0

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:aws_machinelearning_api/machinelearning-2014-12-12.dart';

example/README.md

import 'package:aws_machinelearning_api/machinelearning-2014-12-12.dart';

void main() {
  final service = MachineLearning(region: 'eu-west-1');
  // See documentation on how to use MachineLearning
}

Author: agilord
Source code:  https://github.com/agilord/aws_client
License:

#flutter #dart 

AWS API Client for Amazon Machine Learning
Mike  Kozey

Mike Kozey

1656743400

Flutter Kurdish Localization

Flutter Kurdish Localization 🌍

This package provides unofficial localization support for Central Kurdish Branch Sorani (Kurdish: سۆرانی ,Soranî‎).


Getting Started

import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';

Add these two delegates to localizationsDelegates array

KurdishMaterialLocalizations.delegate For text and dates localization KurdishWidgetLocalizations.delegate For text and UI directionality

return MaterialApp(
    localizationsDelegates: [
        ..
        KurdishMaterialLocalizations.delegate,
        KurdishWidgetLocalizations.delegate,
        ...
    ],
    supportedLocales: [ Locale('ku') ]
    ocale: Locale('ku')
 )

Installing

Use this package as a library

Depend on it

Run this command:

With Flutter:

 $ flutter pub add flutter_kurdish_localization

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):

dependencies:
  flutter_kurdish_localization: ^0.0.9

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_kurdish_localization/flutter_kurdish_localization.dart';
import 'package:flutter_kurdish_localization_example/util/constants.dart';
import 'package:flutter_kurdish_localization_example/localization/demo_localization.dart';
import 'package:flutter_kurdish_localization_example/router/custom_router.dart';
import 'package:flutter_kurdish_localization_example/router/route_constants.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:shared_preferences/shared_preferences.dart';
import 'localization/language_constants.dart';

bool? landingScreen;

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  SharedPreferences _prefs = await SharedPreferences.getInstance();
  landingScreen = (_prefs.getBool('landing') ?? false);

  if (landingScreen == true) {
    debugPrint("Landing : $landingScreen");
  } else {
    debugPrint("Landing : $landingScreen");
  }

  runApp(const MyApp());
}

const List<Locale> supportedLocales = [
  Locale('en'),
  Locale('ku'),
  Locale('ar'),
];

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);
  static void setLocale(BuildContext context, Locale newLocale) {
    _MyAppState state = context.findAncestorStateOfType<_MyAppState>()!;
    state.setLocale(newLocale);
  }

  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  Locale? _locale;
  setLocale(Locale locale) {
    setState(() {
      _locale = locale;
    });
  }

  @override
  void didChangeDependencies() {
    getLocale().then((locale) {
      setState(() {
        _locale = locale;
      });
    });
    super.didChangeDependencies();
  }

  @override
  Widget build(BuildContext context) {
    SystemChrome.setSystemUIOverlayStyle(const SystemUiOverlayStyle(
        systemNavigationBarColor: Colors.transparent, // navigation bar color
        statusBarColor: primaryColor, // status bar color
        statusBarIconBrightness: Brightness.light));
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: "Flutter Multi Localization Demo",
      theme: ThemeData(primarySwatch: Colors.deepOrange),
      locale: _locale,
      supportedLocales: supportedLocales,
      localizationsDelegates: const [
        DemoLocalization.delegate,
        KurdishMaterialLocalizations.delegate,
        KurdishWidgetLocalizations.delegate,
        GlobalMaterialLocalizations.delegate,
        GlobalWidgetsLocalizations.delegate
      ],
      localeResolutionCallback: (locale, supportedLocales) {
        for (var supportedLocale in supportedLocales) {
          if (supportedLocale.languageCode == locale!.languageCode &&
              supportedLocale.countryCode == locale.countryCode) {
            return supportedLocale;
          }
        }
        return supportedLocales.first;
      },
      onGenerateRoute: CustomRouter.generatedRoute,
      initialRoute: landingScreen! ? homeRoute : landingRoute,
    );
  }
}

Demo App


Translations are available now!

Links


Author: Aminsamad
Source Code: https://github.com/aminsamad/flutter_kurdish_localization 
License: GPL-3.0 license

#flutter #dart #localization 

Flutter Kurdish Localization

Lifecycle_lite: You Can Monitor Page Lifecycle By This Lib

lifecycle_lite

通过简单几步,就可以让你使用whenShow()/whenHide()方法来监听页面的生命周期(退回到了该页面/打开其他页面挡着了该页面)了

Principle

这个库的实现很简单,你完全可以通过阅读代码后自己扩展实现。主要就是在MaterialApp中添加一个对路由的监听,也就是MaterialApp#navigatorObservers,之后通过对路由的监听来记录一个路由的栈。再在对应的State#initState方法或StatelessWidget#createElement中绑定两个生命周期方法的实现到最上层路由。 这样在每次监听到路由变化时,去调用顶层路由对应的绑定方法就OK了。 记得在路由被移出的时候对应的方法也要移出哦~

Getting Started

import 'package:lifecycle/lifecycle_mixin.dart';

1.首先在你的根布局MaterialApp中绑定一个路由监听LifeNavigatorObserver().

    MaterialApp(
        navigatorObservers: [
            LifeNavigatorObserver(),
        ],
    );

2.在你需要添加监听的State中混入LifecycleMixin,并在initState中调用bindImplIntoRoute()方法。

2.StatefulWidget的话,需要混入LifecycleStatefulMixin,对应的StatelessWidget,使用的是LifecycleStatelessMixin

3.实现whenShow()/whenHide()方法,代码看起来是下面的样子。

///Statefule page
class WorksDetailState extends State with LifecycleStatefulMixin{

    @override
    whenShow() {
        super.whenShow();
        print("LifeNavigatorObserver---Show了");
    }

    @override
    whenHide() {
        super.whenHide();
        print("LifeNavigatorObserver---Hide了");
    }
}
///Stateless page
class StatelessPage extends StatelessWidget with LifecycleStatelessMixin{

    @override
    whenShow() {
        super.whenShow();
        print("LifeNavigatorObserver---Show了");
    }

    @override
    whenHide() {
        super.whenHide();
        print("LifeNavigatorObserver---Hide了");
    }
}

尽情享用吧 :P;

Installing

Use this package as a library

Depend on it

Run this command:

With Flutter:

 $ flutter pub add lifecycle_lite

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):

dependencies:
  lifecycle_lite: ^0.0.3

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:lifecycle_lite/life_navigator_observer.dart';
import 'package:lifecycle_lite/lifecycle.dart';
import 'package:lifecycle_lite/lifecycle_export.dart';
import 'package:lifecycle_lite/lifecycle_mixin.dart';
import 'package:lifecycle_lite/utils.dart';

原文来源: https://pub.dev/packages/lifecycle_lite 

#flutter #dart 

Lifecycle_lite: You Can Monitor Page Lifecycle By This Lib
Hunter  Krajcik

Hunter Krajcik

1656738420

Conventional: A Light-weight Conventional Commit Parser and tools

Conventional  

A light-weight library for working with commits that follow the Conventional Commits specification.

Features

  • Commit.parseCommits() for parsing commits from a git --no-pager log --no-decorate command output.
  • hasReleasableCommits() for checking if a list Commit items has releasable commits following the convention.
  • writeChangelog() for automated authoring of CHANGELOGs based on commits that follow the conventional commits spec.
  • lintCommit() for checking whether commit messages follow the conventional commit spec. Useful when used alongside git_hooks.
  • nextVersion() for bumping to a next version based on releasable commits.

Usage

A simple usage example:

import 'package:conventional/conventional.dart';

main() {
  final List<Commit> commits = Commit.parseCommits(testLog);
  if (hasReleasableCommits(commits)) {
    writeChangelog(
      commits: commits,
      changelogFilePath: 'CHANGELOG.md',
      version: '1.2.0',
      now: DateTime.now(),
    );
  }
}

Installing

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add conventional

With Flutter:

 $ flutter pub add conventional

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  conventional: ^0.3.0

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:conventional/conventional.dart';

example/conventional_example.dart

import 'package:conventional/conventional.dart';

// ignore_for_file: avoid_print

const testLog = '''
commit fc9d8117b1074c3c965c5c1ccf845d784c026ac7
Author: Jane Doe <jane.doe@example.com>
Date:   Mon Feb 8 15:26:49 2021 +0800

    ci: fix release workflow

commit cf6080079cd96cb4ccc2edca2ba9cacbcfd64704
Author: Jane Doe <jane.doe@example.com>
Date:   Sun Feb 7 12:58:06 2021 +0800

    ci: try fixing problem with release

commit 925fcd38fe8bd2653ea70d67155b8e31082cf4b2
Author: Jane Doe <jane.doe@example.com>
Date:   Fri Feb 5 16:24:38 2021 +0800

    chore: fix analysis errors

    - disabled checking for non null-safe libraries (temporary)
    - annotation for DatabaseLogWrapper

commit 43cf9b78f77a0180ad408cb87e8a774a530619ce
Author: Jane Doe <jane.doe@example.com>
Date:   Fri Feb 5 11:56:26 2021 +0800

    feat: null-safety and piechart cache

    BREAKING CHANGE: uses null-safety

commit e86efaced15f875ae9e11fd0d79b72d85578f79a
Author: Jane Doe <jane.doe@example.com>
Date:   Wed Jan 27 18:20:41 2021 +0800

    chore: wip to null-safety

commit 18bf98f5cddfecc69b26285b6edca063f1a8b1ec
Merge: b457270 dc60e12
Author: Jane Doe <jane.doe@example.com>
Date:   Sat Dec 19 13:28:47 2020 +0800

    ci: Merge pull request #3 from asartalo/semantic-release

    ci: fixing semantic-release config
''';

void main() {
  // Parse commits
  final List<Commit> commits = Commit.parseCommits(testLog);
  final firstCommit = commits.first;
  print(firstCommit.author.name); // "Jane Doe"
  print(firstCommit.author.email); // "jane.doe@example.com"
  print(firstCommit.breaking); // false
  print(firstCommit.type); // "ci"
  print(firstCommit.description); // "fix release workflow"

  // Check if we have releasable commits
  final shouldRelease = hasReleasableCommits(commits);
  print(shouldRelease); // true

  if (shouldRelease) {
    // Write to a changelog file
    writeChangelog(
      commits: commits,
      changelogFilePath: 'CHANGELOG.md',
      version: '1.2.0',
      now: DateTime.now(),
    );
  }
}

Feature Requests and Bugs

Please file feature requests and bugs at the issue tracker. PR's are welcome and appreciated!

Other Solutions

Author: Asartalo
Source Code: https://github.com/asartalo/conventional 
License: MIT license

#flutter #dart 

Conventional: A Light-weight Conventional Commit Parser and tools
Mike  Kozey

Mike Kozey

1656735373

Active_dart: Ruby on Rails Style Helpers for Dart

active_dart

Helpful Ruby-on-Rails style helpers to make the code readable.

Installing

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add active_dart

With Flutter:

 $ flutter pub add active_dart

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  active_dart: ^1.1.1

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:active_dart/active_dart.dart';

Author: Robturtle
Source Code: https://github.com/robturtle/active_dart 
License: MIT license

#flutter #dart #ruby 

Active_dart: Ruby on Rails Style Helpers for Dart
Fabiola  Auma

Fabiola Auma

1656734400

Better App: Monorepo for Dart/flutter Packages

MonoRepo for Dart/Flutter Packages:

  • mono repo:
    •  dart packages.
    •  flutter packages.   

Packages:

These are the available plugins in this repository.

PluginPubPointsPopularityLikes
kitpub packagepub pointspopularitylikes
better_uipub packagepub pointspopularitylikes
web3pub packagepub pointspopularitylikes
crypto_walletpub packagepub pointspopularitylikes
wallet_connectpub packagepub pointspopularitylikes
  •  better_ui: UI库, 封装通用组件, 易于使用.
  •  kit: common utils, 基础库, 常用工具方法.
  •  web3: web3 wrapper with web3dart, 扩展封装.
  •  crypto_wallet: crypto wallet core lib.
  •  wallet_connect: crypto wallet connect lib.

Docs/Wiki:

Development:

make install

make init
  • create a new pkg:

task create-pkg
  • publish a pkg:

task publish-web3

better-ui:


  better_ui: ^0.0.1

  # used by local path:
  better_ui:
    path: /your-local-path-to-here/better-dart/pkg/packages/better_ui # local path

kit:

  kit: ^0.0.1

wallet-connect:

wallet-connect: wallet connect for flutter App

how to use:


  # used by git repo:
  wallet_connect:
    git:
      url: https://github.com/better-dart/pkg.git   # repo http clone url
      ref: "babee6d"                                # git tag or git commit-id
      path: packages/wallet_connect                 # pkg path

web3:

  • web3 封装
  • how to use:

  # used by git repo:
  web3:
    git:
      url: https://github.com/better-dart/pkg.git   # repo http clone url
      ref: "babee6d"                                # git tag or git commit-id
      path: packages/web3                           # pkg path

Use this package as a library

Depend on it

Run this command:

With Flutter:

 $ flutter pub add better_app

This will add a line like this to your package's pubspec.yaml (and run an implicit flutter pub get):

dependencies:
  better_app: ^0.0.1

Alternatively, your editor might support flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:better_app/better_app.dart';

Author: better-dart
Source code: https://github.com/better-dart/pkg
License: MIT license

#dart #flutter 

Better App: Monorepo for Dart/flutter Packages
Daniel  Hughes

Daniel Hughes

1656734400

Graph Algorithms That Operate on Graphs in any Representation

Graph algorithms which do not specify a particular approach for representing a Graph.

Functions in this package will take arguments that provide the mechanism for traversing the graph. For example two common approaches for representing a graph:

class Graph {
  Map<Node, List<Node>> nodes;
}
class Node {
  // Interesting data
}
class Graph {
  Node root;
}
class Node {
  List<Node> edges;
  // Interesting data
}

Any representation can be adapted to the needs of the algorithm:

  • Some algorithms need to associate data with each node in the graph. If the node type T does not correctly or efficiently implement hashCode or ==, you may provide optional equals and/or hashCode functions are parameters.
  • Algorithms which need to traverse the graph take a edges function which provides the reachable nodes.
    • (node) => graph[node]
    • (node) => node.edges

Graphs which are resolved asynchronously will have similar functions which return FutureOr.

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add graphs

With Flutter:

 $ flutter pub add graphs

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  graphs: ^2.1.0

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

Import it

Now in your Dart code, you can use:

import 'package:graphs/graphs.dart';

example/example.dart

// Copyright (c) 2017, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:graphs/graphs.dart';

/// A representation of a directed graph.
///
/// Data is stored on the [Node] class.
class Graph {
  final Map<Node, List<Node>> nodes;

  Graph(this.nodes);
}

class Node {
  final String id;
  final int data;

  Node(this.id, this.data);

  @override
  bool operator ==(Object other) => other is Node && other.id == id;

  @override
  int get hashCode => id.hashCode;

  @override
  String toString() => '<$id -> $data>';
}

void main() {
  var nodeA = Node('A', 1);
  var nodeB = Node('B', 2);
  var nodeC = Node('C', 3);
  var nodeD = Node('D', 4);
  var graph = Graph({
    nodeA: [nodeB, nodeC],
    nodeB: [nodeC, nodeD],
    nodeC: [nodeB, nodeD]
  });

  var components = stronglyConnectedComponents<Node>(
      graph.nodes.keys, (node) => graph.nodes[node] ?? []);

  print(components);
}

Author: dart-lang
Source code: https://github.com/dart-lang/graphs
License: BSD-3-Clause license
#flutter #dart 

Graph Algorithms That Operate on Graphs in any Representation
Hunter  Krajcik

Hunter Krajcik

1656730800

Lints for Dart & Flutter Based on Software industry Standards

Solid Lints

Flutter/Dart lints configuration based on software engineering industry standards (ISO/IEC, NIST) and best practices.

Usage

Add dependency in your pubspec.yaml:

dev_dependencies:
  solid_lints: <INSERT LATEST VERSION>

And then include solid_lints into your project top-level analysis_options.yaml:

include: package:solid_lints/analysis_options.yaml

Also you can use a specialized rule set designed for Dart tests. Add an analysis_options.yaml file under the test/ directory, and include the ruleset:

include: package:solid_lints/analysis_options_test.yaml

Then you can see suggestions in your IDE or you can run checks manually:

dart analyze;
dart run dart_code_metrics:metrics analyze lib test;
dart run dart_code_metrics:metrics check-unused-files lib test;
dart run dart_code_metrics:metrics check-unused-l10n lib test;

Beware that some of the dart_code_metrics checks are not displayed in IDE so running checks manually or in your actions (CI) is essential.

Learn more: https://github.com/dart-code-checker/dart-code-metrics#cli

Badge

To indicate that your project is using Solid Lints, you can use the following badge:

[![style: solid](https://img.shields.io/badge/style-solid-orange)](https://pub.dev/packages/solid_lints)

Installing

Use this package as a library

Depend on it

Run this command:

With Dart:

 $ dart pub add solid_lints

With Flutter:

 $ flutter pub add solid_lints

This will add a line like this to your package's pubspec.yaml (and run an implicit dart pub get):

dependencies:
  solid_lints: ^0.0.11

Alternatively, your editor might support dart pub get or flutter pub get. Check the docs for your editor to learn more.

example/lib/solid_lints_example.dart

void main() {
  sum(1, 1);
}

/// Sum of two numbers. Standard dart overflow rules apply.
int sum(int p1, int p2) => p1 + p2;

Author: Solid-software
Source Code: https://github.com/solid-software/solid_lints 
License: MIT license

#flutter #dart #software 

Lints for Dart & Flutter Based on Software industry Standards