Committed by
GitHub
Update README.zh-cn.md
update to english version
Showing
1 changed file
with
168 additions
and
0 deletions
| @@ -37,6 +37,17 @@ _语言: 中文, [英文](README.md), [越南文](README-vi.md), [印度尼西 | @@ -37,6 +37,17 @@ _语言: 中文, [英文](README.md), [越南文](README-vi.md), [印度尼西 | ||
| 37 | - [改变语言](#改变语言) | 37 | - [改变语言](#改变语言) |
| 38 | - [系统语言](#系统语言) | 38 | - [系统语言](#系统语言) |
| 39 | - [改变主题](#改变主题) | 39 | - [改变主题](#改变主题) |
| 40 | + - [GetConnect](#getconnect) | ||
| 41 | + - [默认配置](#默认配置) | ||
| 42 | + - [自定义配置](#自定义配置) | ||
| 43 | + - [GetPage 中间件](#getpage-中间件) | ||
| 44 | + - [优先级](#优先级) | ||
| 45 | + - [Redirect](#redirect) | ||
| 46 | + - [onPageCalled](#onpagecalled) | ||
| 47 | + - [OnBindingsStart](#onbindingsstart) | ||
| 48 | + - [OnPageBuildStart](#onpagebuildstart) | ||
| 49 | + - [OnPageBuilt](#onpagebuilt) | ||
| 50 | + - [OnPageDispose](#onpagedispose) | ||
| 40 | - [其他高级API](#其他高级api) | 51 | - [其他高级API](#其他高级api) |
| 41 | - [可选的全局设置和手动配置](#可选的全局设置和手动配置) | 52 | - [可选的全局设置和手动配置](#可选的全局设置和手动配置) |
| 42 | - [局部状态组件](#局部状态组件) | 53 | - [局部状态组件](#局部状态组件) |
| @@ -394,6 +405,163 @@ Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark()); | @@ -394,6 +405,163 @@ Get.changeTheme(Get.isDarkMode? ThemeData.light(): ThemeData.dark()); | ||
| 394 | 405 | ||
| 395 | 当`.darkmode`被激活时,它将切换到light主题,当light主题被激活时,它将切换到dark主题。 | 406 | 当`.darkmode`被激活时,它将切换到light主题,当light主题被激活时,它将切换到dark主题。 |
| 396 | 407 | ||
| 408 | +## GetConnect | ||
| 409 | + | ||
| 410 | +GetConnect可以便捷的通过http或websockets进行前后台通信。 | ||
| 411 | + | ||
| 412 | +### 默认配置 | ||
| 413 | + | ||
| 414 | +你能轻松的通过extend GetConnect就能使用GET/POST/PUT/DELETE/SOCKET方法与你的Rest API或websockets通信。 | ||
| 415 | + | ||
| 416 | +```dart | ||
| 417 | +class UserProvider extends GetConnect { | ||
| 418 | + // Get request | ||
| 419 | + Future<Response> getUser(int id) => get('http://youapi/users/$id'); | ||
| 420 | + // Post request | ||
| 421 | + Future<Response> postUser(Map data) => post('http://youapi/users', body: data); | ||
| 422 | + // Post request with File | ||
| 423 | + Future<Response<CasesModel>> postCases(List<int> image) { | ||
| 424 | + final form = FormData({ | ||
| 425 | + 'file': MultipartFile(image, filename: 'avatar.png'), | ||
| 426 | + 'otherFile': MultipartFile(image, filename: 'cover.png'), | ||
| 427 | + }); | ||
| 428 | + return post('http://youapi/users/upload', form); | ||
| 429 | + } | ||
| 430 | + | ||
| 431 | + GetSocket userMessages() { | ||
| 432 | + return socket('https://yourapi/users/socket'); | ||
| 433 | + } | ||
| 434 | +} | ||
| 435 | +``` | ||
| 436 | + | ||
| 437 | +### 自定义配置 | ||
| 438 | + | ||
| 439 | +GetConnect具有多种自定义配置。你可以配置base Url,配置响应,配置请求,添加权限验证,甚至是尝试认证的次数,除此之外,还可以定义一个标准的解码器,该解码器将把您的所有请求转换为您的模型,而不需要任何额外的配置。 | ||
| 440 | + | ||
| 441 | +```dart | ||
| 442 | +class HomeProvider extends GetConnect { | ||
| 443 | + @override | ||
| 444 | + void onInit() { | ||
| 445 | + // All request will pass to jsonEncode so CasesModel.fromJson() | ||
| 446 | + httpClient.defaultDecoder = CasesModel.fromJson; | ||
| 447 | + httpClient.baseUrl = 'https://api.covid19api.com'; | ||
| 448 | + // baseUrl = 'https://api.covid19api.com'; // It define baseUrl to | ||
| 449 | + // Http and websockets if used with no [httpClient] instance | ||
| 450 | + | ||
| 451 | + // It's will attach 'apikey' property on header from all requests | ||
| 452 | + httpClient.addRequestModifier((request) { | ||
| 453 | + request.headers['apikey'] = '12345678'; | ||
| 454 | + return request; | ||
| 455 | + }); | ||
| 456 | + | ||
| 457 | + // Even if the server sends data from the country "Brazil", | ||
| 458 | + // it will never be displayed to users, because you remove | ||
| 459 | + // that data from the response, even before the response is delivered | ||
| 460 | + httpClient.addResponseModifier<CasesModel>((request, response) { | ||
| 461 | + CasesModel model = response.body; | ||
| 462 | + if (model.countries.contains('Brazil')) { | ||
| 463 | + model.countries.remove('Brazilll'); | ||
| 464 | + } | ||
| 465 | + }); | ||
| 466 | + | ||
| 467 | + httpClient.addAuthenticator((request) async { | ||
| 468 | + final response = await get("http://yourapi/token"); | ||
| 469 | + final token = response.body['token']; | ||
| 470 | + // Set the header | ||
| 471 | + request.headers['Authorization'] = "$token"; | ||
| 472 | + return request; | ||
| 473 | + }); | ||
| 474 | + | ||
| 475 | + //Autenticator will be called 3 times if HttpStatus is | ||
| 476 | + //HttpStatus.unauthorized | ||
| 477 | + httpClient.maxAuthRetries = 3; | ||
| 478 | + } | ||
| 479 | + } | ||
| 480 | + | ||
| 481 | + @override | ||
| 482 | + Future<Response<CasesModel>> getCases(String path) => get(path); | ||
| 483 | +} | ||
| 484 | +``` | ||
| 485 | + | ||
| 486 | +## GetPage 中间件 | ||
| 487 | + | ||
| 488 | +GetPage现在有个新的参数可以把列表中的Get中间件按指定顺序执行。 | ||
| 489 | + | ||
| 490 | +**注意**: 当GetPage有中间件时,所有的子page会自动有相同的中间件。 | ||
| 491 | + | ||
| 492 | +### 优先级 | ||
| 493 | + | ||
| 494 | +设置中间件的优先级定义Get中间件的执行顺序。 | ||
| 495 | + | ||
| 496 | +```dart | ||
| 497 | +final middlewares = [ | ||
| 498 | + GetMiddleware(priority: 2), | ||
| 499 | + GetMiddleware(priority: 5), | ||
| 500 | + GetMiddleware(priority: 4), | ||
| 501 | + GetMiddleware(priority: -8), | ||
| 502 | +]; | ||
| 503 | +``` | ||
| 504 | + | ||
| 505 | +这些中间件会按这个顺序执行 **-8 => 2 => 4 => 5** | ||
| 506 | + | ||
| 507 | +### Redirect | ||
| 508 | + | ||
| 509 | +当被调用路由的页面被搜索时,这个函数将被调用。它将RouteSettings作为重定向的结果。或者给它null,就没有重定向了。 | ||
| 510 | + | ||
| 511 | +```dart | ||
| 512 | +RouteSettings redirect(String route) { | ||
| 513 | + final authService = Get.find<AuthService>(); | ||
| 514 | + return authService.authed.value ? null : RouteSettings(name: '/login') | ||
| 515 | +} | ||
| 516 | +``` | ||
| 517 | + | ||
| 518 | +### onPageCalled | ||
| 519 | + | ||
| 520 | +在调用页面时,创建任何东西之前,这个函数会先被调用。 | ||
| 521 | +您可以使用它来更改页面的某些内容或给它一个新页面。 | ||
| 522 | + | ||
| 523 | +```dart | ||
| 524 | +GetPage onPageCalled(GetPage page) { | ||
| 525 | + final authService = Get.find<AuthService>(); | ||
| 526 | + return page.copyWith(title: 'Welcome ${authService.UserName}'); | ||
| 527 | +} | ||
| 528 | +``` | ||
| 529 | + | ||
| 530 | +### OnBindingsStart | ||
| 531 | + | ||
| 532 | +这个函数将在绑定初始化之前被调用。 | ||
| 533 | +在这里,您可以更改此页面的绑定。 | ||
| 534 | + | ||
| 535 | +```dart | ||
| 536 | +List<Bindings> onBindingsStart(List<Bindings> bindings) { | ||
| 537 | + final authService = Get.find<AuthService>(); | ||
| 538 | + if (authService.isAdmin) { | ||
| 539 | + bindings.add(AdminBinding()); | ||
| 540 | + } | ||
| 541 | + return bindings; | ||
| 542 | +} | ||
| 543 | +``` | ||
| 544 | + | ||
| 545 | +### OnPageBuildStart | ||
| 546 | + | ||
| 547 | +这个函数将在绑定初始化之后被调用。 | ||
| 548 | +在这里,您可以在创建绑定之后和创建页面widget之前执行一些操作。 | ||
| 549 | + | ||
| 550 | +```dart | ||
| 551 | +GetPageBuilder onPageBuildStart(GetPageBuilder page) { | ||
| 552 | + print('bindings are ready'); | ||
| 553 | + return page; | ||
| 554 | +} | ||
| 555 | +``` | ||
| 556 | + | ||
| 557 | +### OnPageBuilt | ||
| 558 | + | ||
| 559 | +这个函数将在GetPage.page调用后被调用,并给出函数的结果,并获取将要显示的widget。 | ||
| 560 | + | ||
| 561 | +### OnPageDispose | ||
| 562 | + | ||
| 563 | +这个函数将在处理完页面的所有相关对象(Controllers, views, ...)之后被调用。 | ||
| 564 | + | ||
| 397 | ## 其他高级API | 565 | ## 其他高级API |
| 398 | 566 | ||
| 399 | ```dart | 567 | ```dart |
-
Please register or login to post a comment