cids_cgi 1.1.13 copy "cids_cgi: ^1.1.13" to clipboard
cids_cgi: ^1.1.13 copied to clipboard

outdated

CGI Design System for Flutter

CGI Design System for Flutter #

CGI Design System for flutter.

Sobre o projeto #

"O projeto veio para trazer um conforto a todos os desenvolvedores com casos onde o desenvolvimento se repete constantemente, como em casos de tabelas de CRUD, campos customizados de data, entre outros...".


Instalação #

  • Adicione o cids_cgi: 1.1.13 no pubspec.yaml do seu aplicativo.
  • Adicione os arquivos do google firebase no Android e iOS.
  • Rode flutter pub get

Componens #

SettingsPage #

Tela de configurações dos aplicativos

SettingsPage(
    motorista: false,
    placa: false,
    filled: false,
    cpf: false,
    appBarColor: Colors.transparent,
    appBarTextColor: Colors.white,
);

- Props #

Propriedade Required? Type Default value
motorista false Boolean false
placa false Boolean false
filled false Boolean false
cpf false Boolean false
appBarColor false Color Colors.transparent
appBarTextColor false Color Colors.transparent



AuthPage #

Tela de login dos aplicativos


Baixe e adicione essas imagens no folder <projeto>/images/

consultors.png:



consultors_dark.png:



Permissões #


Android #

<!-- Arquivo AndroidManifest.xml -->
<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

iOS #

<key>NSFaceIDUsageDescription</key>
<string>Por que vai usar a autenticação?</string>


No arquivo main.dart adicione:

//main.dart
var defaultPage;

BuildContext biometricsContext;
final biometricsHandler = BiometricsHandler(
  autenticacaoPage: () {
    Navigator.of(biometricsContext).pushNamed('/auth');
  }, 
  homePage: () {
    Navigator.of(biometricsContext)
      .pushNamedAndRemoveUntil('/home', (Route<dynamic> route) => false);
  } 
);

void main() async {
  biometricsHandler.listen();
  biometricsHandler();
}


Crie um arquivo na raiz da pasta lib com o nome page.dart
//page.dart
final biometricsPage = BiometricsErrorPage(
  biometricsHandler: biometricsHandler,
  context: (context) {
    biometricsContext = context;
  }
);

final homePage = HomePage(
  context: (context) {
    biometricsContext = context;
  }
);

final authPage = AuthPage(
  dropDb: () async {
    //manupula os dados salvos
  },
  frase: 'Todos os indicadores da sua empresa',
  imagePath: "images/index.jpg",
);

Crie um arquivo na raiz da pasta lib com o nome constants.dart
Arquivo para adicionar as strings das rotas do aplicativo
//constants.dart
const String homeRoute = '/home';
const String authRoute = '/auth';
const String indexRoute = '/index';

Crie um arquivo na raiz da pasta lib com o nome routes.dart importando as telas do arquivo page.dart
//routes.dart
class Router {
  static Route<dynamic> generateRoute(RouteSettings settings) {
    switch (settings.name) {
      case authRoute:
        return SlideRightRoute(widget: biometricsPage);

      case homeRoute:
        return SlideRightRoute(widget: homePage);

      case indexRoute: 
        return SlideRightRoute(widget: authPage);

      default:
        return SlideRightRoute(widget: authPage);
    }
  }
}

No arquivo da tela principal do aplicativo, geralmente a tela Home, adicione algumas configurações extras para buscar o contexto
//home.dart sua padina de home do aplicativo
class HomePage extends StatefulWidget { //TORNE A HOME UM STATEFULL WIDGET!!!!
  @override
  _HomePageState createState() => _HomePageState();

  //CRIE UMA FUNCTION QUE SERA CHAMADA AO CARREGAR A TELA PASSANDO O CONTEXT!!!!
  final Function(BuildContext) context; 
  const HomePage({Key key, @required this.context}) : super(key: key);
}

class _HomePageState extends State<HomePage> with WidgetsBindingObserver {
  @override
  void initState() {
    super.initState();

    //LEMBRE-SE DE PASSAR O CONTEXT AO CRIAR A TELA, SEM ISSO A BIOMETRIA NUNCA IRÁ FNUNCIONAR CORRETAMENTE!!!!
    widget.context(context);
  }
}

Por ultimo e o mais importante, altere o arquivo MainActivity.kt na pasta android do projeto. Necessário para funcionamento no android
import io.flutter.embedding.android.FlutterFragmentActivity

class MainActivity: FlutterFragmentActivity() {
}



QRScan #

Permissões #


Android #

<!-- Arquivo AndroidManifest.xml -->
<uses-permission android:name="android.permission.CAMERA" />

iOS #

<key>NSCameraUsageDescription</key>
<string>Your Description</string>

<key>io.flutter.embedded_views_preview</key>
<string>YES</string>


//QRScanType.bar   BARCODE
//QRScanType.code  QRCODE
String response = await QRScan().startScan(context, QRScanType.bar);
print(response);



Handler #

SharedPreferences #

final handler = SharedPreferencesHandler();

// busca, salva e remove qualquer informação
handler.set("chave", "valor");
handler.get("chave");
handler.remove("chave");
handler.clear(); // limpa toda e qualquer chave salva

handler.setNomeAplicativo("nome app");  // seta o nome do app para aparecer no gateway
handler.setPasswordFirebase("senha");   // seta a senha default do FIREBASE
handler.setVersaoProgramaPacific(1);    // seta a versão do programa .r
handler.setGateway(false);              // seta se utiliza ou não o gateway

handler.getVersaoProgramaPacific();     // busca a versão do programa .r
handler.getNumDevicesVendedor();        // busca o numero de devices
handler.getPasswordFirebase();          // busca a senha default do login no FIREBASE
handler.getNomeAplicativo();            // busca o nome do app configurado
handler.getVersaoMinima();              // busca a versão minima do firebase
handler.getBuildVersion();              // busca a versão de build do app
handler.getNumDevices();                // busca o numero de dispositivos liberados
handler.getMotorista();                 // busca o motorista nas configs
handler.getGateway();                   // busca se utiliza o gateway
handler.getUsuario();                   // busca o usuario
handler.getCodigo();                    // busca o codigo da empresa
handler.getSenha();                     // busca a senha
handler.getPlaca();                     // busca a placa configurada
handler.getToken();                     // busca o token de sessão do gateway
handler.getURL();                       // busca a url do pacific

handler.logout();                       // limpa os dados de login
handler.isAuth();                       // verifica se está logado;



DialogHandler #

final handler = DialogHandler();

// mostra um alert na tela com avisos
handler.show(message: "mensagem para mostrar pro usuário", context: context);

// mostra mensagem para confirmação
handler.confirm(message: "mensagem para mostrar pro usuário", context: context, textBtn1: "btn1", textBtn2: "btn2");



CidsHandler #

final handler = CidsHandler()

// faz load das configurações do json criado no projeto do firebase
// necessario usar no metodo main do arquivo main.dart
handler.initialize(
  gateway: true,
  aplicativo: "",
  senha: "",
  versaoPacific: 2
)



ErrorHandler #

try {
    Dio dio = new Dio();
    Response response = await dio.get("url");

    return response?.data ?? [];
} on DioError catch (error) {
    final handler = ErrorHandler(error.response.data)

    Retorno r = await handler.validaErro();
    throw r.mensagem;
} catch (e) {
    throw e.toString();
}